C# WPF图表控件之ChartControl用法指南①

 引言部分,总领全篇文章的中心内容。

   WPF的DevExpress ChartControl是一种功能强大的可视化工具,可帮助您将数据显示为二维或伪三维条形图、区域、线和许多其他形式。

01

将数据绑定到Chart Series

Step 1. 创建新项目并添加图表

  • 创建一个新的WPF应用程序项目。将其命名为第1课BindCharttoData。

  • 将ChartControl组件从DX.21.2:数据和分析工具箱部分拖动到主窗口。

    d417789978920d4925550bdeff24898a.png

  • 右键单击图表控件并在关联菜单中选择Layout | Reset All 以使图表填充整个窗口。

    d7b6c3341551f75fa8b593565687818c.png

新创建的图表包含一个空白的并排条形图和一个图例。主窗口的标记应如下所示:

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Lesson1BindChartToData"xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" x:Class="Lesson1BindChartToData.MainWindow"mc:Ignorable="d"Title="MainWindow" Height="315" Width="560"><Grid><dxc:ChartControl><dxc:ChartControl.Legends><dxc:Legend/></dxc:ChartControl.Legends><dxc:XYDiagram2D><dxc:BarSideBySideSeries2D DisplayName="Series 1"/></dxc:XYDiagram2D></dxc:ChartControl></Grid>
</Window>

对以下库的引用将自动添加到项目中:

  • DevExpress.Data.v21.2

  • DevExpress.Xpf.Core.v21.2

  • DevExpress.Charts.v21.2.Core

  • DevExpress.Xpf.Charts.v21.2

  • DevExpress.Mvvm.v21.2

  • DevExpress.Xpf.Printing.v21.2

  • DevExpress.Printing.v21.2.Core

注意:

这些引用是从全局程序集缓存(GAC)中选择的。要在本地复制它们或在以后的产品安装中包含它们,请使用以下目录:

C:\ProgramFiles(x86)\DevExpress 21.2\Components\Bin\Framework\

Step 2. 准备数据模型

您可以将图表绑定到数据库、XML文件或运行时创建的数据。数据源应该实现IEnumerable, IListSource 或者他们的后代。有关如何用数据填充图表的更多信息,请参阅提供数据部分。在本主题中,您将图表绑定到ObservableCollection<T>.

使用DataPoint类实现开发数据模型:

using System.Collections.ObjectModel;
using System.Windows;namespace Lesson1BindChartToData {public class DataPoint {public string Argument { get; set; }public double Value { get; set; }public static ObservableCollection<DataPoint> GetDataPoints() {return new ObservableCollection<DataPoint> {new DataPoint { Argument = "Asia", Value = 5.289D},new DataPoint { Argument = "Australia", Value = 2.2727D},new DataPoint { Argument = "Europe", Value = 3.7257D},new DataPoint { Argument = "North America", Value = 4.1825D},new DataPoint { Argument = "South America", Value = 2.1172D}};}}
}

Step 3. 添加ViemModel

使用以下代码实现MainWindowViewModel类:

using System.Collections.ObjectModel;
using System.Windows;namespace Lesson1BindChartToData {public class MainWindowViewModel {public ObservableCollection<DataPoint> Data { get; private set; }public MainWindowViewModel() {this.Data = DataPoint.GetDataPoints();}}
}

Step 4. 指定Data Context

d3cfee96bcf28a05f08b16e7a2c67197.png

Step 5. 绑定数据给图表

单击图表控件的智能标记。指定ChartControl.DataSource属性,如下图所示:

a3da1ef75ed82f08257e7726f8617492.png

Step 6. 用数据填充序列

指定应为系列点参数和值提供值的数据源字段。

将序列的series.ArgumentDataMember属性设置为参数。

7764609acffdc7d10685e8c92297661c.png

将序列的series.ValueDataMember属性设置为Value。

88da0e3d51978cfc8b3b80103d34c885.png

Step 7. 自定义图表

  • 指定序列名称

将Series.DisplayName属性设置为年度统计信息。显示名称标识图例中的系列。

0216ee3589eaca96a2c340eb3e4e9675.png

  • 添加图表标题并自定义其位置

单击图表控件标题属性的省略号按钮以调用标题集合编辑器。使用“添加”按钮创建新标题并将其添加到图表中。

将TitleBase.HorizontalAlignment属性设置为“中心”。

定义标题库。按地区销售的内容。单击“确定”。

6f0accc980e3dfba1af09dc0952d3f43.png

  • 配置十字光标的选项

要自定义十字线选项,请单击ChartControl.CrosshairOptions属性的“新建”按钮以创建十字线选项实例。

启用以下属性:

  1. CrosshairOptions.ShowArgumentLabels

  2. CrosshairOptions.ShowValueLabels

  3. CrosshairOptionBase.ShowValueLine

213846e5ce37b551a9c11295e82499c7.png

将XYSeries2D.Crosshair LabelPattern设置为$V:f2}M。

082ea397528b174cdf69f93ee2550c27.png

02


Results

运行项目以查看结果。

4ec4f0d1953f99da35bbffa2227dc96a.png

生成的代码如下所示:

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Lesson1BindChartToData" xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" x:Class="Lesson1BindChartToData.MainWindow"mc:Ignorable="d" Title="MainWindow" Height="400" Width="650"><Window.DataContext><local:MainWindowViewModel/></Window.DataContext><Grid><dxc:ChartControl DataSource="{Binding Data}"><dxc:ChartControl.CrosshairOptions><dxc:CrosshairOptions ShowArgumentLabels="True" ShowValueLabels="True" ShowValueLine="True"/></dxc:ChartControl.CrosshairOptions><dxc:ChartControl.Titles><dxc:Title Content="Sales by Regions" HorizontalAlignment="Center"/></dxc:ChartControl.Titles><dxc:ChartControl.Legends><dxc:Legend/></dxc:ChartControl.Legends><dxc:XYDiagram2D><dxc:BarSideBySideSeries2D DisplayName="Annual Statistics" ArgumentDataMember="Argument" ValueDataMember="Value" CrosshairLabelPattern="${V:f2}M"/></dxc:XYDiagram2D></dxc:ChartControl></Grid>
</Window>

C# CODE

using System.Collections.ObjectModel;
using System.Windows;
namespace Lesson1BindChartToData {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window {public MainWindow() {InitializeComponent();}}public class MainWindowViewModel {public ObservableCollection<DataPoint> Data { get; private set; }public MainWindowViewModel() {this.Data = DataPoint.GetDataPoints();}}public class DataPoint {public string Argument { get; set; }public double Value { get; set; }public static ObservableCollection<DataPoint> GetDataPoints() {return new ObservableCollection<DataPoint> {new DataPoint { Argument = "Asia", Value = 5.289D},new DataPoint { Argument = "Australia", Value = 2.2727D},new DataPoint { Argument = "Europe", Value = 3.7257D},new DataPoint { Argument = "North America", Value = 4.1825D},new DataPoint { Argument = "South America", Value = 2.1172D}};}}
}

原文链接:https://docs.devexpress.com/WPF/9757/controls-and-libraries/charts-suite/chart-control/getting-started/lesson-1-bind-chart-series-to-data#results

翻译小编:mm1552923

公众号:dotNet编程大全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之SwipeRefreshLayout

wipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消…

你以后会不会有小三?

1 千万别碰到小孩就去逗他&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 像极了早上刚睡醒炸毛的你▼3 乞丐和社畜的区别▼4 当你学校装了能上网的平板后&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5 看图写字&#xff08;素材来源网络&#xff0…

CSharp 如何OCR离线识别文本

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织由于微信群人数太多入群请添加小编微信号&#xff08;yanjinhuawechat&#xff09;或&#xff08;W_Feng_aiQ&#xff09;邀请入群&#xff08;需备注WPF开发者&#xff09;本项目是基于开源项目P…

第一个h5页面

不废话&#xff0c;先爆照&#xff0c;不好勿喷 我用的软件是WebStorm开发&#xff0c;然后也知道了h5我们可以用谷歌浏览器点击右键&#xff0c;然后点击审查&#xff0c;就可以按照手机屏幕来看到页面 下面是项目的图片 这个是我的index.html文件 <!doctype html> <…

Ubuntu系统备份和恢复

为什么80%的码农都做不了架构师&#xff1f;>>> 安装好Ubuntu之后&#xff0c;别忘了安装 for linux 防火墙和杀毒软件。在备份系统前&#xff0c;请保证系统是无错和干净的&#xff1a;本人操作系统是ubuntu14.04&#xff0c;不知道是系统出了问题还是装的软件有问…

热血致敬!曾影响几代科学巨匠的传奇经典,至今仍无人能超越!

▲ 点击查看有人说&#xff0c;世界上有两本神书&#xff0c;一本是霍金的《时间简史》&#xff0c;是可以不看&#xff0c;但书架必须得有。还有一本&#xff0c;就是必须有也必须看的书&#xff0c;这就是《从一到无穷大》。2018年&#xff0c;清华大学校长&#xff0c;将这本…

.NET 6 中 gRPC 的新功能

gRPC是一个现代的、跨平台的、高性能的 RPC 框架。gRPC for .NET 构建在 ASP.NET Core 之上&#xff0c;是我们推荐的在 .NET 中构建 RPC 服务的方法。.NET 6 进一步提高了 gRPC 已经非常出色的性能&#xff0c;并添加了一系列新功能&#xff0c;使 gRPC 在现代云原生应用程序中…

这,像极了爱情!

全世界只有3.14 % 的人关注了爆炸吧知识特别的爱给特别的你古希腊数学家普罗克洛斯说过&#xff1a;“数学就是这样一种东西&#xff1a;她提醒你有无形的灵魂&#xff0c;她赋予她所发现的真理以生命&#xff1b;她唤起心神&#xff0c;澄净智慧&#xff1b;她给我们的内心思想…

mysql 调用未定义函数_php – Wierd和Annoying错误:调用未定义的函数mysql_query()[复制]...

参见英文答案 > Why shouldn’t I use mysql_* functions in PHP? 15个我已经在这一个超过一个小时了,我可以连接到我的数据库和所有(不会给出任何错误)但是当我尝试使用时我收到以下错误“的mysql_query($查询);”Call to undefined f…

ZABBIX2.4.8监控 Windows Mysql数据库

2019独角兽企业重金招聘Python工程师标准>>> 系统环境&#xff1a; 操作系统&#xff1a;Windows Server 2012 ZABBIX Server&#xff1a;2.4.8 IP地址&#xff1a;192.168.0.77 模板脚本地址&#xff1a;http://pan.baidu.com/s/1eSDaiS6 ZABBIX客户端操作 1、在za…

美国知名华人学者陈刚被捕,他出身贫寒,是一个不折不扣的工作狂

全世界只有3.14 % 的人关注了爆炸吧知识陈刚教授&#xff08;图片来源&#xff1a;MIT网站&#xff09;本文转自赛先生当地时间1月14日&#xff0c;美国司法部官网消息显示&#xff0c;美国工程院院士、麻省理工学院&#xff08;MIT&#xff09;教授陈刚因未能向美国能源部披露…

使用 CliWrap 让C#中的命令行交互举重若轻

在代码中进行命令行交互是一个很常见的场景, 特别是在一些CI CD 自动化流程中, 在这之前我们会使用 System.Diagnostics.Process API, 现在有一个更灵活的工具 CliWarp, 这是一个在 .NET 平台使用的命令行交互工具库, 通过在C# 中使用 Fluent 的API, 让命令行交互举重若轻。htt…

Android之应用程序如何调用支付宝接口

http://blog.csdn.net/lilidejing/article/details/19483717 最近在做一个关于购物商城的项目&#xff0c;项目里面付款这块我选的是调用支付宝的接口&#xff0c;因为用的人比较多。 在网上搜索了以下&#xff0c;有很多这方面的教程&#xff0c;但大部分教程过于陈旧&#xf…

权威解读 | 人类社会正进入DT时代 如何激活生产力?

导语当前&#xff0c;DT产业正在转入“快速发育”及“应用拉动”的发展阶段。 DT时代的新范式雏形初现。从工业时代到信息时代&#xff0c;从IT时代再到DT时代&#xff0c;不只是单个点上的技术突破、模式创新&#xff0c;而是已经发生了数轮包括“基础设施生产要素支柱产业分工…

整整26本!由单墫教授主编、葛军等人操刀的高中数学教材都在这里!

全世界只有3.14 % 的人关注了爆炸吧知识我国从20世纪50年代以来&#xff0c;中学数学教学大纲虽经历多次修订&#xff0c;但都有一个共同的指导思想&#xff0c;就是搞好三基&#xff0c;同时强调指出&#xff0c;正确理解数学概念是掌握数学基础知识的前提。而当前我国数学教学…

女生:???

1 快速打个漂亮的领带&#xff0c;男生快来get√2 站住&#xff01;把小鱼干留下再走&#xff01;3 被狗子秀了一脸4 女生&#xff1a;&#xff1f;&#xff1f;&#xff1f;5 夏天的你vs冬天的你6 地球最濒危的兔种&#xff1a;Columbia Basin Pygmy Rabbit 7 你看 我们女孩子…

JAVA类思维_面向对象思维 Java中的类和对象及其应用

一、面向过程与面向对象面向过程: 从事务执行者的角度思考问题,我该干什么 重点在过程----事务流程面向对象: 从事务的指挥者角度思考问题,我应该找谁干什么 重点在对象面向对象的优点:1.将复杂问题简单化2.从事务的执行者转化为事物的指挥者3.更贴近人的思维(懒人思想)二、类…

这部纪录片央视发力了,每一帧都可以当壁纸,BBC也无法超越

全世界只有3.14 % 的人关注了爆炸吧知识地球上已知的植物有三十多万种&#xff0c;其中十分之一生长在中国。这些植物不仅为中国带来福祉&#xff0c;还不断迁徙到世界各地。在人类的不懈努力下&#xff0c;它们又获得了新的姿态&#xff0c;为不同的文明带来不一样的色彩。《影…

解答网友提问 | 使用VS2022快速生成React/Angular/Vue.js + Web API前后端集成项目

前言上次发表了《一键生成Vue.js Web API前后端集成项目》后&#xff0c;有多位网友来问&#xff0c;有不有其他的前后端集成模板&#xff1a;实际上&#xff0c;VS2022没有提供前后端集成项目模板。但是&#xff0c;使用VS2022&#xff0c;同样可以轻松实现React/Angular/Vue…

地球上最快的速度......

1 新手司机的车能多不靠谱&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 &#xff1f;&#xff1f;&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 哈哈哈哈&#xff0c;实在是太像了▼4 狗子&#xff1a;飞来横祸&#xff08;素材来源网…