当前位置:网站首页>wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
2022-07-07 12:10:00 【孔雀东南飞-深圳】
背景介绍:
一行数据 比如 有 姓名 年龄 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";
}
}
边栏推荐
- Parameter keywords final, flags, internal, mapping keywords internal
- 3D detection: fast visualization of 3D box and point cloud
- 手里的闲钱是炒股票还是买理财产品好?
- 最长上升子序列模型 AcWing 1014. 登山
- 118. Yanghui triangle
- 请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
- 请问,PTS对数据库压测有好方案么?
- [fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
- Thread pool reject policy best practices
- Common response status codes
猜你喜欢
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
高等数学---第八章多元函数微分学1
Leetcode simple question sharing (20)
Did login metamask
2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
供应链供需预估-[时间序列]
2022-7-7 Leetcode 844. Compare strings with backspace
Selenium库
AI人才培育新思路,这场直播有你关心的
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
随机推荐
TPG x AIDU | AI leading talent recruitment plan in progress!
Redis只能做缓存?太out了!
【日常训练--腾讯精选50】231. 2 的幂
When FC connects to the database, do you have to use a custom domain name to access it outside?
2022-7-6 Leetcode 977.有序数组的平方
《厌女:日本的女性嫌恶》摘录
Build a secure and trusted computing platform based on Kunpeng's native security
MySQL "invalid use of null value" solution
2022-7-6 Leetcode 977. Square of ordered array
PHP中用下划线开头的变量含义
[1] Basic knowledge of ros2 - summary version of operation commands
LeetCode简单题分享(20)
请问,在使用flink sql sink数据到kafka的时候出现执行成功,但是kafka里面没有数
Transferring files between VMware and host
Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
What parameters need to be reconfigured to replace the new radar of ROS robot
Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
高等數學---第八章多元函數微分學1
PostgreSQL array type, each splice
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航