当前位置:网站首页>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";
}
}
边栏推荐
- Transferring files between VMware and host
- 最长上升子序列模型 AcWing 1014. 登山
- SSRF漏洞file伪协议之[网鼎杯 2018]Fakebook1
- 搜索框效果的实现【每日一题】
- What parameters need to be reconfigured to replace the new radar of ROS robot
- call undefined function openssl_cipher_iv_length
- 2022-7-6 Leetcode 977.有序数组的平方
- The reason why data truncated for column 'xxx' at row 1 appears in the MySQL import file
- FCOS3D label assignment
- .net core 关于redis的pipeline以及事务
猜你喜欢
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Build a secure and trusted computing platform based on Kunpeng's native security
Details of redis core data structure & new features of redis 6
.net core 关于redis的pipeline以及事务
"New red flag Cup" desktop application creativity competition 2022
Navicat run SQL file import data incomplete or import failed
高等數學---第八章多元函數微分學1
SSRF vulnerability file pseudo protocol [netding Cup 2018] fakebook1
Custom thread pool rejection policy
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
随机推荐
Vmware共享主机的有线网络IP地址
Laravel5 call to undefined function OpenSSL cipher IV length() error php7 failed to open OpenSSL extension
docker部署oracle
接口自动化测试-接口间数据依赖问题解决
How does MySQL control the number of replace?
Common response status codes
Clickhouse (03) how to install and deploy Clickhouse
Details of redis core data structure & new features of redis 6
Excuse me, as shown in the figure, the python cloud function prompt uses the pymysql module. What's the matter?
高等數學---第八章多元函數微分學1
Is the compass stock software reliable? Is it safe to trade stocks?
118. Yanghui triangle
数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
Excuse me, why is it that there are no consumption messages in redis and they are all piled up in redis? Cerely is used.
How can the PC page call QQ for online chat?
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
请问,PTS对数据库压测有好方案么?
Solve the cache breakdown problem
Laravel form builder uses