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 控件.本篇 ...
最新文章
- Mac下编译ffmpeg出现“ERROR: x265 not found using pkg-config”
- 20145324 《信息安全系统设计基础》第十周学习总结
- Spring静态资源访问配置
- 世界人工智能发展究竟到了什么水平 ?
- BZOJ.3495.[PA2010]Riddle(2-SAT 前缀优化建图)
- 对Redis单线程的一些看法
- 王秋杨的“前世”和她的“在路上”
- 《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动
- python dd 合并二进制文件_马克的Python学习笔记#数据编码与处理 5
- 在Python中手动引发(抛出)异常
- 实操教程 | 深度学习pytorch训练代码模板(个人习惯)
- VC Ping IP的类
- 信息安全工程师 学习笔记 完结
- c#实现文件转base64和base64转文件(文件为任意格式)
- SBUS协议数据演示
- 反射、注解、字节码、类加载机制
- qlv格式转mp4格式(简单、高效)
- Java多线程系列--【JUC锁05】-非公平锁
- 安利一款SOLIDWORKS插件,可一键帮你分离配置那种!
- 移位操作与乘除法之间关系
热门文章
- 束缚电荷和极化电荷_概念解释_电磁学
- 五分钟学Java:如何学习Java面试必考的网络编程
- FPGA基础知识,应用,ASIC、ASSP区别(四)
- oppofindx6pro参数配置 oppo findx6pro 评测
- php sqlite 注入,利用SQLite数据库文件实现任意代码执行
- 1141 PAT Ranking of Institutions (PAT甲级)
- 如何通过第三方工具维护计算机,无需第三方优化软件利用电脑自身维护功能优化系统...
- 17情态动词 must/have to
- MySQL的视图定义、规则与视图作用、创建视图和修改视图,以及视图的保存
- 数据结构中各种排序算法比较