背景介绍:

一行数据 比如 有 姓名 年龄 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 界面随之响应相关推荐

  1. 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息

    一.项目总览 二.运行结果 I.鼠标单击 II.鼠标双击 三.源文件代码 1.RecData.pro #------------------------------------------------ ...

  2. 记录——python的ui界面实现

    前言 在写完程序之后想让程序看起来更加可视化一点,所以想看看在上面加个ui界面,记录下发生过的问题以及解决方法.       如果发现文章哪里有问题,欢迎指正. 为什么选择pyside2呢? 在选择库 ...

  3. WPF DataGrid 绑定DataSet数据 自动生成行号

    1.绑定数据:dataGrid1.ItemsSource = dataSet.Tables[0].DefaultView; 注意:在创建DataGrid 时可以通过AutoGenerateColumn ...

  4. WPF DataGrid 通过自定义表头模拟首行固定

    WPF DataGrid 通过自定义表头模拟首行固定 独立观察员 2021 年 9 月 25 日 最近工作中要在 WPF 中做个表格,自然首选就是 DataGrid 控件了.问题是,UI 设计的表格是 ...

  5. 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐

    国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...

  6. WPF DataGrid 如何将被选中行带到视野中

    WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGri ...

  7. WPF DataGrid:解决排序、ScrollIntoView、刷新和焦点问题

    目录 介绍 第一种方法:记住选定的行,刷新DataGrid,再次选择行 最终方法:使用OneWay绑定,避免调用Refresh() 改进1:使ScrollIntoView()起作用 改进2:将选定的行 ...

  8. 使用绑定进行WPF DataGrid格式化的指南

    目录 介绍 WPF DataGrid结构 WPF绑定基础 使用的业务数据 将DataGrid与业务数据连接 DataGrid格式 格式化列 格式化完整行 根据显示的值格式化单元格 根据业务逻辑数据格式 ...

  9. WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载)

    WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载) WPF DataGrid 系列示例程序,由浅入深逐步介绍如何在WPF 应用程序中使用新的DataGrid 控件.本篇 ...

最新文章

  1. Mac下编译ffmpeg出现“ERROR: x265 not found using pkg-config”
  2. 20145324 《信息安全系统设计基础》第十周学习总结
  3. Spring静态资源访问配置
  4. 世界人工智能发展究竟到了什么水平 ?
  5. BZOJ.3495.[PA2010]Riddle(2-SAT 前缀优化建图)
  6. 对Redis单线程的一些看法
  7. 王秋杨的“前世”和她的“在路上”
  8. 《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动
  9. python dd 合并二进制文件_马克的Python学习笔记#数据编码与处理 5
  10. 在Python中手动引发(抛出)异常
  11. 实操教程 | 深度学习pytorch训练代码模板(个人习惯)
  12. VC Ping IP的类
  13. 信息安全工程师 学习笔记 完结
  14. c#实现文件转base64和base64转文件(文件为任意格式)
  15. SBUS协议数据演示
  16. 反射、注解、字节码、类加载机制
  17. qlv格式转mp4格式(简单、高效)
  18. Java多线程系列--【JUC锁05】-非公平锁
  19. 安利一款SOLIDWORKS插件,可一键帮你分离配置那种!
  20. 移位操作与乘除法之间关系

热门文章

  1. 束缚电荷和极化电荷_概念解释_电磁学
  2. 五分钟学Java:如何学习Java面试必考的网络编程
  3. FPGA基础知识,应用,ASIC、ASSP区别(四)
  4. oppofindx6pro参数配置 oppo findx6pro 评测
  5. php sqlite 注入,利用SQLite数据库文件实现任意代码执行
  6. 1141 PAT Ranking of Institutions (PAT甲级)
  7. 如何通过第三方工具维护计算机,无需第三方优化软件利用电脑自身维护功能优化系统...
  8. 17情态动词 must/have to
  9. MySQL的视图定义、规则与视图作用、创建视图和修改视图,以及视图的保存
  10. 数据结构中各种排序算法比较