WPF使用Dev和WinForm有许多不同,相对而言,WPF要更简单和炫酷一点,我只做了一点基本的功能,没有仔细的研究,这里只介绍一下WPF Dev ChartControl绘制XYDiagram的基础。

XYDiagramControl.xaml页面

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
x:Class="WpfControl.XYDiagramControl"
mc:Ignorable="d">
<Grid>
<dxc:ChartControl HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top">
<dxc:XYDiagram2D LabelsResolveOverlappingMinIndent="" x:Name="diagram1" EnableAxisXNavigation="True">
<dxc:XYDiagram2D.DefaultPane>
<dxc:Pane Name="pane"/>
</dxc:XYDiagram2D.DefaultPane>
<dxc:XYDiagram2D.AxisY>
<dxc:AxisY2D GridLinesMinorVisible="False">
</dxc:AxisY2D>
</dxc:XYDiagram2D.AxisY>
<dxc:XYDiagram2D.SecondaryAxesY>
</dxc:XYDiagram2D.SecondaryAxesY>
<dxc:XYDiagram2D.AxisX>
<dxc:AxisX2D GridLinesVisible="False"/>
</dxc:XYDiagram2D.AxisX>
<dxc:LineSeries2D MarkerVisible="True" LabelsVisibility="True" ArgumentDataMember="Key" ValueDataMember="Value" x:Name="series1">
<dxc:LineSeries2D.LineStyle>
<dxc:LineStyle Thickness="" />
</dxc:LineSeries2D.LineStyle>
</dxc:LineSeries2D>
</dxc:XYDiagram2D>
<dxc:ChartControl.Legend>
<dxc:Legend HorizontalPosition="Right"/>
</dxc:ChartControl.Legend>
<dxc:ChartControl.ToolTipController>
<dxc:ChartToolTipController AutoPopDelay="" InitialDelay=""/>
</dxc:ChartControl.ToolTipController>
</dxc:ChartControl>
</Grid>
</UserControl>

XYDiagramControl.cs页面

using System.Collections.Generic;
using System.Windows.Controls;
using DevExpress.Xpf.Charts;
using Dugufeixue.Common;
namespace WpfControl
{
/// <summary>
/// UserControl2.xaml 的交互逻辑
/// </summary>
public partial class XYDiagramControl : UserControl
{
double maxValue = ;
private char divider = '_';
public XYDiagramControl(List<DataEntity> decs, bool isLine, bool isShowLabel, bool isSameY)
{
InitializeComponent();
int index = ;
foreach (DataEntity de in decs)
{
Series series = null;
if (!isSameY)
{
//设置Y轴的第二坐标
SecondaryAxisY2D SecondaryAxisY = new SecondaryAxisY2D();
diagram1.SecondaryAxesY.Add(SecondaryAxisY);
//设置第二坐标的标题
AxisTitle title = new AxisTitle();
title.Content = de.Ytitle;
SecondaryAxisY.Title = title;
if (isLine)
{
//新建一个折线图
series = new LineSeries2D();
//设置series与第二坐标轴关联
XYDiagram2D.SetSeriesAxisY((LineSeries2D)series, SecondaryAxisY);
}
else
{
//新建一个柱状图
series = new BarSideBySideSeries2D();
//设置柱状图的Label
SeriesLabel label = new SeriesLabel();
label.Indent = ;
series.Label = label;
if (isShowLabel)
{
BarSideBySideSeries2D.SetLabelPosition(series.Label, Bar2DLabelPosition.Outside);
}
XYDiagram2D.SetSeriesAxisY((BarSideBySideSeries2D)series, SecondaryAxisY);
}
}
else
{
if (isLine)
{
series = new LineSeries2D();
}
else
{
series = new BarSideBySideSeries2D();
SeriesLabel label = new SeriesLabel();
label.Indent = ;
series.Label = label;
if (isShowLabel)
{
BarSideBySideSeries2D.SetLabelPosition(series.Label, Bar2DLabelPosition.Outside);
}
}
}
series.Name = "series" + index;
series.DisplayName = de.Displayname;
//设置series的数据源
series.DataSource = de.Dic;
series.LabelsVisibility = isShowLabel;
series.ArgumentDataMember = "Key";
series.ValueDataMember = "Value";
//向XYDiagram中添加series
diagram1.Series.Add(series);
index++;
}
}
}
}

最新文章

  1. [Unity3D]巧妙利用父级子级实现Camera场景平面漫游
  2. java+jsp+servlet实现分页
  3. .NET LINQ 元素操作
  4. 读取手机上所有应用程序并显示(APP)
  5. TDI - Transport Driver Interface
  6. android handler 简介
  7. get set 中 快捷键生成的get方法中 renturn 没有 this.对象 中的this 解决方法
  8. 基于cmake编译安装MySQL-5.5
  9. shockt通信
  10. React v16-alpha 从virtual dom 到 dom 源码简读
  11. C#使用原生的Directx和OpenGL绘图
  12. android 在Fragment里添加Theme主题
  13. 2015第44周六tomcat集群了解
  14. HTML5 web开发时遇到的一个奇葩问题。
  15. Lua rawget rawset newindex 函数定义和例子
  16. 我的 FPGA 学习历程(10)—— 实验:数码管驱动
  17. IScroll基本用法
  18. 八大排序算法——插入排序(动图演示 思路分析 实例代码java 复杂度分析)
  19. German Collegiate Programming Contest 2018​ A. Attack on Alpha-Zet
  20. shell脚本语法学习

热门文章

  1. 阿里云ECS服务器 java JDK安装和配置 mysql安装和配置
  2. 修改profile导致bash不能用的补救方法
  3. 葡萄城首席架构师:前端开发与Web表格控件技术解读
  4. 利用js对象将iframe数据缓存, 实现子页面跳转后, 返回时不丢失之前填写的数据
  5. TCP连接可能出现的异常总结
  6. php静态调用非静态方法
  7. 常用javascript对象——Date对象
  8. Zircon
  9. js模糊查询案例
  10. 微信小程序wxs如何使用