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推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消…

网络传输中的反码求和算法

在发送数据&#xff0c;计算数据包的校验和&#xff0c;按如下步骤&#xff1a; 1、把校验和字段置为0&#xff1b; 2、把需校验的数据看成以16位为单位的数字组成&#xff0c;依次进行二进制反码求和&#xff1b; 3、把得到的结果存入校验和字段中。 在接收数据时&#xff0c;…

IDEA中maven如何将jar包导入本地的maven库

第一步&#xff1a;将IKAnalyzer.jar包存放在一个文件夹中&#xff0c;比如mylib文件夹第二步&#xff1a;建立一个IKAnalyzer.jar包相关的pom.xml文件&#xff0c;需要在pom.xml文件中定义其maven坐标及其相应的依赖代码即可&#xff0c;同样将pom文件存放在上述jar文件同一文…

你以后会不会有小三?

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

MySQL--3--mysqldump备份策略

参考地址&#xff1a;http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/database-administration.html#backup-strategy-example 5.9 备份策略 在my.inf中启动二进制日志&#xff0c;用--log-bin[file_name]选项启动时&#xff0c;mysqld写入包含所有更新数据的SQL命令的…

java判断星座if语句_Java根据出生日期计算(判断)星座

下面我们来了解一下十二星座对应的日期划分范围。白羊&#xff1a;0321~0420 天秤&#xff1a;0924~1023 金牛&#xff1a;0421~0521 天蝎&#xff1a;1024~1122 双子&#xff1a;0522~0621 射手&#xff1a;1123~1221 巨蟹&#xff1a;0622~0722 摩羯&#xff1a;1222~0120 狮…

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> <…

HDU-2023

求平均成绩 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 54671 Accepted Submission(s): 13094 Problem Description假设一个班有n(n<50)个学生&#xff0c;每人考m(m<5)门课&#xff0c;求每个学生的…

Ubuntu系统备份和恢复

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

回顾2012;展望2013

同样的话题&#xff0c;但是却在不同的时间&#xff0c;不同的地点&#xff0c;感触却也良多。回顾2012&#xff1b;展望2013虽说是老话题。但对于我来说是一年向下一年的一个跨度。今天是2012年12月19日凌晨05&#xff1b;16分转载于:https://blog.51cto.com/tengfeidongman/1…

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

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

链表之单链表约瑟夫问题(一)

package com.chenyu.zuo.linkedList;import com.chenyu.zuo.linkedList.RemoveMidNode.Node; /*** 环形单链表的约瑟夫问题* 比如5个人,报数第3个就删除,从第一个人开始报数* 1、2、3、4、5* 1、2、4、5* 2、4、5* 2、4* 4* 最后4留下来了* 输入:一个单向环形链表的头节点h…

.NET 6 中 gRPC 的新功能

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

视频编码H.264的应用

近日&#xff0c;数字音视频编解码技术标准&#xff08;AVS&#xff09;工作组在12月21日结束的第47次会议上公布并于明年4月份会正式推出最新的AVS2视频编码标准&#xff0c;新的编码效率比上一代标准翻了一番&#xff0c;并且在无失真音频编码上取得了突破性的进展。AVS编码标…

java捕捉音频,如何捕获在Java中的音频数据

I want to access the audio data that my microphone is recording with Java. How would I do that?My goal is to save the audio data that is recorded and simultaneously play it to the user.解决方案If you dont need any of the additional functionality in JMF, I…

saltstack的安装(转载连接)

see the link转载于:https://blog.51cto.com/358778493/1767256

java-developer 性能是怎么样的?

在项目中&#xff0c;我们都经常面临所开发的产品性能问题。然而这些问题都不是很容易解决。大多性能问题追根究底都是系统架构或者说是设计问题。推翻了重做是不可能的&#xff0c;怎么从这些问题中吸取经验教训才是正道。来看看我遇到的设计问题。 案例&#xff1a; 企业…

链表之单链表约瑟夫问题(二)

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我…

这,像极了爱情!

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