背景 winform切为wpf,使用devexpress插件

参考的网站为:https://docs.devexpress.com/WPF/7875/wpf-controls

1.GridControl行号设置

这里主要有两个问题,一个是行号要从1开始,二是行号这一列的行宽设置(默认行宽到100后,数字就显示不全了)

行宽是IndicatorWidth 属性,行号是RowIndicatorContentTemplate 实现

    <dxg:TableView ShowGroupPanel="False"   Name="gvTable" IndicatorWidth="50"  RowIndicatorContentTemplate="{StaticResource rowIndicatorContentTemplate}"/><DataTemplate x:Key="rowIndicatorContentTemplate"><StackPanel VerticalAlignment="Stretch"HorizontalAlignment="Stretch"><TextBlock Text="{Binding Path=RowHandle.Value,Converter={StaticResource rowIndicatorConverter}}"TextAlignment="Center"Foreground="Black"/></StackPanel></DataTemplate>public class RowIndicatorConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){try{if (value == null){return 0;}int num = (int) value;num = num + 1;return num;}catch (Exception ex){return 0;}}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return value != null && value.Equals(true) ? parameter : Binding.DoNothing;}}

2.ChartControl 使用

这块wpf和winform的实现还是有点区别的。

legend是图例,通过Orientation和VericalPosition来控制位置。AxisX和AxisY为X和Y轴。

<dxc:ChartControl x:Name="chartControl1" Grid.Column="1" Grid.Row="1"><dxc:ChartControl.Legend><dxc:Legend HorizontalPosition="Center" Orientation="Horizontal" VerticalPosition="TopOutside"  FontSize="10" Background="White" Name="chartLegend"/></dxc:ChartControl.Legend><dxc:XYDiagram2D x:Name="xychart" EnableAxisXNavigation="True" EnableAxisYNavigation="True"><dxc:XYDiagram2D.ContextMenu><ContextMenu><MenuItem Name="miCopy" Header="拷贝到剪贴板" Click="miCopy_Click" /></ContextMenu></dxc:XYDiagram2D.ContextMenu><dxc:XYDiagram2D.AxisX><dxc:AxisX2D><dxc:AxisX2D.Title  ><dxc:AxisTitle/></dxc:AxisX2D.Title></dxc:AxisX2D></dxc:XYDiagram2D.AxisX><dxc:XYDiagram2D.AxisY><dxc:AxisY2D><dxc:AxisY2D.Title  ><dxc:AxisTitle/></dxc:AxisY2D.Title><dxc:AxisY2D.VisualRange><dxc:Range MaxValue="100" MinValue="0"></dxc:Range></dxc:AxisY2D.VisualRange><dxc:AxisY2D.WholeRange><dxc:Range MaxValue="100" MinValue="0"></dxc:Range></dxc:AxisY2D.WholeRange></dxc:AxisY2D></dxc:XYDiagram2D.AxisY></dxc:XYDiagram2D></dxc:ChartControl>

添加数据内容,可以为点(PointSeries2D),曲线(SplineSeries2D),或者饼状图(PieSeries2D)等

  PointSeries2D series1 = new PointSeries2D();series1.DisplayName = featureType;series1.MarkerModel = new CircleMarker2DModel();series1.Brush = Brushes.Red;series1.MarkerSize = 5;

鼠标滚动来放大缩小图片是通过EnableAxisXNavigation和EnableAxisYNavigation,但是默认为true的话初始化后就有滚动条很难看,所以改为当滚轮滚动时,设置这两个值。

    private void xychart_MouseWheel(object sender, MouseWheelEventArgs e){xychart.EnableAxisXNavigation = true;xychart.EnableAxisYNavigation = true;}

图片右键复制

 private void miCopy_Click(object sender, RoutedEventArgs e){MemoryStream stream = new MemoryStream();chartControl1.ExportToImage(stream);System.Windows.Forms.Clipboard.Clear();System.Windows.Forms.Clipboard.SetImage(System.Drawing.Image.FromStream(stream));}

3.GridView.GetDataRow的替换

winform中为   DataRow drFocused = gvHistory.GetDataRow(gvHistory.FocusedRowHandle);

wpf替换为

DataRowView obj = gdXls.GetRow(firstRow - 1) as DataRowView;

DataRow fieldRow = obj.Row;

4.DocumentManager的替换

wpf中用DockLayoutManager 替换同时手动计算每个子窗口的位置(以三行两列为例)

 <dxdo:DockLayoutManager Margin="12" Name="dockManager1"><dxdo:LayoutGroup Orientation="Horizontal"><dxdo:DocumentGroup  x:Name="documentGroup"  DockItemInterval="10" MDIStyle="MDI" Orientation="Vertical"></dxdo:DocumentGroup></dxdo:LayoutGroup></dxdo:DockLayoutManager>private void Window_Loaded(object sender, RoutedEventArgs e){for (int i = 0; i < 3; i++) {for (int j = 0; j < 2; j++) {documentGroup.Items.Add(CreateDocumentPanel(i,j));}}}private DocumentPanel CreateDocumentPanel(int i, int j) {double width = documentGroup.ActualWidth / 2;double height = documentGroup.ActualHeight / 3;DocumentPanel panel = new DocumentPanel(); panel.Name = "panel" + i + j;ucChart control=null;if (j == 0) {if (i == 0) {control = new ucChart(0);}else if (i == 1){control = new ucChart(3);}else if (i == 2){control = new ucChart(5); }}else if (j == 1){if (i == 0){control = new  ucChart(2);}else if (i == 1){control = new ucChart(1);}else if (i == 2){control = new ucChart(4);}}if (control != null){panel.Content = control;}panel.MDISize = new Size(width,height);panel.MDILocation = new Point(j*width,i*height);return panel;}}

5.ImageList图片导出

winfrom中使用ImageList来存放资源,wpf切换时,需要把这些图片导出为png。

     ImageList imageList = new ImageList();System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("img.ImageStream")));int i = 0;foreach (Image img  in imageList.Images){img.Save(i+++".png",ImageFormat.Png);}

wpf devexpress相关推荐

  1. WPF DevExpress grid 设置自定义筛选栏的条件为包含关系

    WPF DevExpress grid 设置自定义筛选栏的条件为包含关系 根据 DevExpress.Xpf.Grid改造 来源:CSDN  原文:https://blog.csdn.net/alis ...

  2. WPF DevExpress 主题包无法在别的电脑使用问题

    WPF DevExpress 控件主题前台设置方式 dx:ThemeManager.ThemeName="Office2013" 后台更改主题方式: DevExpress.Xpf. ...

  3. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月26日-3月31日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月26日-3月31日) 本周Silverlight学习资源更新 Silverlight性能优化纪要-原作者Jo ...

  4. python 日期 格式转换 英文_python 中英文时间转换

    WPF DevExpress 设置雷达图Radar样式 DevExpress中定义的ChartControl很不错,很多项目直接使用这种控件. 本节讲述雷达图的样式设置 删除Mysql数据表中多余的重 ...

  5. DevExpress v17.2新版亮点—WPF篇(四)

    2019独角兽企业重金招聘Python工程师标准>>> DevExpress年终击穿底价,单套授权低至67折!仅剩最后6天!查看详情>>> 用户界面套包DevExp ...

  6. DevExpress v15.1:WPF控件升级(四)

    2019独角兽企业重金招聘Python工程师标准>>> <下载最新版DevExpress WPF Controls v15.1.5> WPF编辑器 在Token编辑器中的 ...

  7. DevExpress WPF v18.2新版亮点(四)

    行业领先的.NET界面控件2018年第二次重大更新--DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress WPF v18.2 的新 ...

  8. DevExpress v18.1新版亮点——WPF篇(五)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...

  9. DevExpress v18.1新版亮点——WPF篇(二)

    2019独角兽企业重金招聘Python工程师标准>>> 用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevE ...

最新文章

  1. [程序员创造力训练 1] 猜单词 - 关于健康
  2. linux定时任务的设置
  3. 虚拟化、完全虚拟化、半虚拟化和准虚拟化技术区别
  4. 【grunt整合版】30分钟学会使用grunt打包前端代码
  5. Python学习笔记:第三方模块2
  6. java 批量处理 示例_Java异常处理教程(包含示例和最佳实践)
  7. Oracle 11g 新特性 -- 自适应游标共享(Adaptive Cursor Sharing: ACS) 说明
  8. 为什么wait和notify必须放在synchronized中?
  9. 解决PyInstaller打包程序exe在win7运行异常问题(OSError: [WinError 87] 参数错误、Error loading Python DLL python39.dll等)
  10. 一步一步写算法(之 A*算法)
  11. [网络安全自学篇] 九十四.《Windows黑客编程技术详解》之提权技术(令牌权限提升和Bypass UAC)
  12. flash 围棋_中国卫视执白0.5目胜flash77
  13. linux 实现离线迅雷,Linux下使用wget/aria2进行离线迅雷批量下载
  14. php文件zend解密,php zend无法解密怎么办
  15. epub格式电子书剖析之一:文档构成
  16. Vulhub靶场的搭建(下载和安装)
  17. 浮点类型的比较,精度控制(float.h的利用 ,DBL_EPSILON)
  18. 【科普】你知道腾讯的技术职级吗?
  19. 万博武汉与中关村信息谷签订战略协议,协力推进武汉企业数字化转型
  20. 2021年安全员-B证考试报名及安全员-B证模拟考试题

热门文章

  1. 如何写一个游戏AI(二)卷积神经网络是什么,怎么使用?
  2. v4l2-framework.txt中文翻译
  3. JS案例——找出两个数组中的不同元素或对象、数组去重
  4. Jtest工具介绍及使用案例
  5. 使用Jtest 2022.2简化严格的Java测试
  6. go语言的type func()用法
  7. MFC--删除指定目录下的文件夹及其文件
  8. 2019个人比赛总结
  9. IT人员及程序员怎样学好英语(关于如何利用极其有限的时间和条件学好英文)
  10. GDOI2016口胡题解