wpf devexpress
背景 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相关推荐
- WPF DevExpress grid 设置自定义筛选栏的条件为包含关系
WPF DevExpress grid 设置自定义筛选栏的条件为包含关系 根据 DevExpress.Xpf.Grid改造 来源:CSDN 原文:https://blog.csdn.net/alis ...
- WPF DevExpress 主题包无法在别的电脑使用问题
WPF DevExpress 控件主题前台设置方式 dx:ThemeManager.ThemeName="Office2013" 后台更改主题方式: DevExpress.Xpf. ...
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月26日-3月31日)
分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月26日-3月31日) 本周Silverlight学习资源更新 Silverlight性能优化纪要-原作者Jo ...
- python 日期 格式转换 英文_python 中英文时间转换
WPF DevExpress 设置雷达图Radar样式 DevExpress中定义的ChartControl很不错,很多项目直接使用这种控件. 本节讲述雷达图的样式设置 删除Mysql数据表中多余的重 ...
- DevExpress v17.2新版亮点—WPF篇(四)
2019独角兽企业重金招聘Python工程师标准>>> DevExpress年终击穿底价,单套授权低至67折!仅剩最后6天!查看详情>>> 用户界面套包DevExp ...
- DevExpress v15.1:WPF控件升级(四)
2019独角兽企业重金招聘Python工程师标准>>> <下载最新版DevExpress WPF Controls v15.1.5> WPF编辑器 在Token编辑器中的 ...
- DevExpress WPF v18.2新版亮点(四)
行业领先的.NET界面控件2018年第二次重大更新--DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress WPF v18.2 的新 ...
- DevExpress v18.1新版亮点——WPF篇(五)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...
- DevExpress v18.1新版亮点——WPF篇(二)
2019独角兽企业重金招聘Python工程师标准>>> 用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevE ...
最新文章
- [程序员创造力训练 1] 猜单词 - 关于健康
- linux定时任务的设置
- 虚拟化、完全虚拟化、半虚拟化和准虚拟化技术区别
- 【grunt整合版】30分钟学会使用grunt打包前端代码
- Python学习笔记:第三方模块2
- java 批量处理 示例_Java异常处理教程(包含示例和最佳实践)
- Oracle 11g 新特性 -- 自适应游标共享(Adaptive Cursor Sharing: ACS) 说明
- 为什么wait和notify必须放在synchronized中?
- 解决PyInstaller打包程序exe在win7运行异常问题(OSError: [WinError 87] 参数错误、Error loading Python DLL python39.dll等)
- 一步一步写算法(之 A*算法)
- [网络安全自学篇] 九十四.《Windows黑客编程技术详解》之提权技术(令牌权限提升和Bypass UAC)
- flash 围棋_中国卫视执白0.5目胜flash77
- linux 实现离线迅雷,Linux下使用wget/aria2进行离线迅雷批量下载
- php文件zend解密,php zend无法解密怎么办
- epub格式电子书剖析之一:文档构成
- Vulhub靶场的搭建(下载和安装)
- 浮点类型的比较,精度控制(float.h的利用 ,DBL_EPSILON)
- 【科普】你知道腾讯的技术职级吗?
- 万博武汉与中关村信息谷签订战略协议,协力推进武汉企业数字化转型
- 2021年安全员-B证考试报名及安全员-B证模拟考试题