当前位置:网站首页>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";
}
}
边栏推荐
- Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
- postgresql array类型,每一项拼接
- Drawerlayout suppress sideslip display
- THINKPHP框架的优秀开源系统推荐
- FC连接数据库,一定要使用自定义域名才能在外面访问吗?
- Cargo placement problem
- 现在网上开户安全么?那么网上开户选哪个证券公司?
- Leecode3. Longest substring without repeated characters
- 【网络安全】sql注入语法汇总
- Dry goods | summarize the linkage use of those vulnerability tools
猜你喜欢
实现IP地址归属地显示功能、号码归属地查询
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
Redis只能做缓存?太out了!
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
2022-7-6 beginner redis (I) download, install and run redis under Linux
XML文件的解析操作
TPG x AIDU | AI leading talent recruitment plan in progress!
DID登陆-MetaMask
高等數學---第八章多元函數微分學1
随机推荐
Use day JS let time (displayed as minutes, hours, days, months, and so on)
What parameters need to be reconfigured to replace the new radar of ROS robot
How to check the ram and ROM usage of MCU through Keil
Wired network IP address of VMware shared host
ES日志报错赏析-Limit of total fields
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
566. 重塑矩阵
Excusez - moi, l'exécution a été réussie lors de l'utilisation des données de puits SQL Flink à Kafka, mais il n'y a pas de nombre dans Kafka
Laravel Form-builder使用
2022-7-7 Leetcode 844.比较含退格的字符串
[network security] SQL injection syntax summary
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
Xshell connection server changes key login to password login
请问,redis没有消费消息,都在redis里堆着是怎么回事?用的是cerely 。
PC端页面如何调用QQ进行在线聊天?
Excerpt from "misogyny: female disgust in Japan"
Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
2022-7-6 Leetcode 977.有序数组的平方
118. Yanghui triangle
Data refresh of recyclerview