当前位置:网站首页>WPF DataGrid realizes the UI interface to respond to a data change in a single line
WPF DataGrid realizes the UI interface to respond to a data change in a single line
2022-07-07 14:12:00 【Peacock Flying Southeast - Shenzhen】
Background introduction :
A line of data such as Yes full name Age id Number When id change to update id When Age change Update age With id As a number If id New if changed Otherwise change
1 encapsulation NotifyObject class
public class NotifyObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
//---------------------------- Trigger event
public void OnPropertyChanged(string val)
{
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
{
handler(this, new PropertyChangedEventArgs(val));
}
}
}2 encapsulation model class
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 encapsulation Interface class 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 Defining subclasses
public class Test : ITest
{
public Test()
{
if(_orderItemList == null)
{
_orderItemList = new ObservableCollection<Tags_Model>();
}
}
}5 Definition viewModel class
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=" Microsoft YaHei "
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 The main page
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";
}
}
边栏推荐
- Help tenants
- [fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
- UML 状态图
- 2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
- 最长上升子序列模型 AcWing 1012. 友好城市
- 2022-7-6 Leetcode 977.有序数组的平方
- Excuse me, I have three partitions in Kafka, and the flinksql task has written the join operation. How can I give the join operation alone
- Redis can only cache? Too out!
- 2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
- .net core 关于redis的pipeline以及事务
猜你喜欢

Use day JS let time (displayed as minutes, hours, days, months, and so on)

带你掌握三层架构(建议收藏)

UML 状态图

AI talent cultivation new ideas, this live broadcast has what you care about

2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis

数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】

AI人才培育新思路,这场直播有你关心的

UML sequence diagram (sequence diagram)

Vmware共享主机的有线网络IP地址

Transferring files between VMware and host
随机推荐
2022-7-6 beginner redis (I) download, install and run redis under Linux
2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
手里的闲钱是炒股票还是买理财产品好?
Is the spare money in your hand better to fry stocks or buy financial products?
交换机和路由器的异同
Dry goods | summarize the linkage use of those vulnerability tools
Selenium库
Excuse me, as shown in the figure, the python cloud function prompt uses the pymysql module. What's the matter?
高等数学---第八章多元函数微分学1
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
内存溢出和内存泄漏的区别
Excuse me, when using Flink SQL sink data to Kafka, the execution is successful, but there is no number in Kafka
Parsing of XML files
接口自动化测试-接口间数据依赖问题解决
Clickhouse (03) how to install and deploy Clickhouse
属性关键字Aliases,Calculated,Cardinality,ClientName