wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
背景介绍:
一行数据 比如 有 姓名 年龄 id 号 当 id 变化 更新 id 当 年龄变化 更新年龄 以 id 作为编号 如果 id 变化了则新增 否则更改
1 封装 NotifyObject 类
public class NotifyObject : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;//----------------------------激发事件public void OnPropertyChanged(string val){PropertyChangedEventHandler handler = PropertyChanged;if(handler != null){handler(this, new PropertyChangedEventArgs(val));}}}
2 封装 model 类
public class Tags_Model : NotifyObject{public Tags_Model(){Clear();}public void Clear(){id = string.empty;name = string.Empty;age = string.Empty;}int id;public int ID{get { return id; }set{id = value;OnPropertyChanged("ID");}}string name;public string Name{get { return name; }set{name = value;OnPropertyChanged("Name");}}public string age;public string Age{get{return age;}set{age = value;OnPropertyChanged("Age");}}}
3 封装 接口类 ITest
public abstract class ITest : NotifyObject{protected ObservableCollection<Tags_Model> _orderItemList = null;public void Add(Tags_Model model){if (model != null){System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>{_orderItemList.Add(model);}));}}public ObservableCollection<Tags_Model> OrderItemList{get { return _orderItemList; }set { _orderItemList = value; OnPropertyChanged("OrderItemList"); }}}
4 定义子类
public class Test : ITest{public Test(){if(_orderItemList == null){_orderItemList = new ObservableCollection<Tags_Model>();}}}
5 定义 viewModel 类
public class vm_Test : NotifyObject{private Test ieas = null;public vm_Test(){if ( ieas == null ) { ieas = new Test(); }}public Test Test{get { return ieas; }set { ieas = value; OnPropertyChanged("Test"); }}}
6 xaml
<Grid><DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Height="355" Margin="10,55,0,0" AutoGenerateColumns="False"IsReadOnly="True"Width="774"FontFamily="微软雅黑"FontSize="20"ItemsSource ="{Binding Test.OrderItemList}"><DataGrid.Columns><DataGridTemplateColumn Width="80" Header="id"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock x:Name="txtID"Text="{Binding ID}"VerticalAlignment="Center"HorizontalAlignment="Center"/></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="80" Header="name"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock x:Name="txtID"Text="{Binding Name}"VerticalAlignment="Center"HorizontalAlignment="Center"/></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="80" Header="age"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock x:Name="txtID"Text="{Binding Age}"VerticalAlignment="Center"HorizontalAlignment="Center"/></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid></Grid>
6 主页面
public vm_Test _view = null;Dictionary<string, Tags_Model> dic = null;public MainWindow(){InitializeComponent();if ( _view == null ) { _view = new vm_Test(); }if(dic == null){dic = new Dictionary<string, Tags_Model>();}if ( _view != null ){this.DataContext = _view;}if ( _view != null && _view.Test != null ){Tags_Model t = new Tags_Model(){ID = 1,};_view.Test.Add(t);t.age = "dkladjla";dic.Add(t.ID.ToString(), t);t.name = "dkaldkaldd";}
}
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应相关推荐
- 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息
一.项目总览 二.运行结果 I.鼠标单击 II.鼠标双击 三.源文件代码 1.RecData.pro #------------------------------------------------ ...
- 记录——python的ui界面实现
前言 在写完程序之后想让程序看起来更加可视化一点,所以想看看在上面加个ui界面,记录下发生过的问题以及解决方法. 如果发现文章哪里有问题,欢迎指正. 为什么选择pyside2呢? 在选择库 ...
- WPF DataGrid 绑定DataSet数据 自动生成行号
1.绑定数据:dataGrid1.ItemsSource = dataSet.Tables[0].DefaultView; 注意:在创建DataGrid 时可以通过AutoGenerateColumn ...
- WPF DataGrid 通过自定义表头模拟首行固定
WPF DataGrid 通过自定义表头模拟首行固定 独立观察员 2021 年 9 月 25 日 最近工作中要在 WPF 中做个表格,自然首选就是 DataGrid 控件了.问题是,UI 设计的表格是 ...
- 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐
国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...
- WPF DataGrid 如何将被选中行带到视野中
WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGri ...
- WPF DataGrid:解决排序、ScrollIntoView、刷新和焦点问题
目录 介绍 第一种方法:记住选定的行,刷新DataGrid,再次选择行 最终方法:使用OneWay绑定,避免调用Refresh() 改进1:使ScrollIntoView()起作用 改进2:将选定的行 ...
- 使用绑定进行WPF DataGrid格式化的指南
目录 介绍 WPF DataGrid结构 WPF绑定基础 使用的业务数据 将DataGrid与业务数据连接 DataGrid格式 格式化列 格式化完整行 根据显示的值格式化单元格 根据业务逻辑数据格式 ...
- WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载)
WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载) WPF DataGrid 系列示例程序,由浅入深逐步介绍如何在WPF 应用程序中使用新的DataGrid 控件.本篇 ...
最新文章
- 如何查看一个网站是否部署了SSL证书?
- Tensorflow之RNN,LSTM
- 【深度学习】Tensorflow完成线性回归对比机器学习LinearRegression()
- 查看linux cpu负载均衡,关于linux内核cpu进程的负载均衡
- 洛阳php编程培训,洛阳PHP开发培训分享提高PHP开发效率的四个编程习惯
- Ubuntu已经很好用了
- 数字图像处理理论课件(清华大学计算机科学与技术)
- 计算机开机显示屏幕优化中,联想电脑一开机就出现图像设定屏幕优化中怎样才能取消...
- c语言实验报告函数及其应用,2020c语言实验报告函数总结心得.docx
- android获取手机号ip地址,手机ip查询我的地址定位(网站如何抓取用户手机号和IP地址)...
- Canvas绘制六边形网格
- 分治法:找出不合格银币
- Echarts使用map3D+visualMap 实现地图下钻,区域高亮状态下变高
- cgb2110-day13
- 使用ArchR分析单细胞ATAC-seq数据(第十四章)
- 计算机专业大创要求,“大创项目”推动计算机专业学生创新实践能力的提高
- 2021-2027全球与中国半导体封装基板(IC载板)市场现状及未来发展趋势
- JavaScript中日期Date、Math方法及使用例 驼峰命名法 网页显示时间 对数据取整 随机数 返回绝对值 四舍五入
- 华为畅享z和畅享20pro有什么区别
- 企业申请AAA企业信用等级认证的4大好处