当前位置:网站首页>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";
}
}
边栏推荐
- Parsing of XML files
- Dry goods | summarize the linkage use of those vulnerability tools
- 数据流图,数据字典
- [AI practice] Application xgboost Xgbregressor builds air quality prediction model (II)
- Interface automation test - solution of data dependency between interfaces
- Transferring files between VMware and host
- js 获取当前时间 年月日,uniapp定位 小程序打开地图选择地点
- Vmware共享主机的有线网络IP地址
- Regular expression integer positive integer some basic expressions
- UML 状态图
猜你喜欢
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
最长上升子序列模型 AcWing 482. 合唱队形
UML sequence diagram (sequence diagram)
Transferring files between VMware and host
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
TPG x AIDU | AI leading talent recruitment plan in progress!
2022-7-7 Leetcode 844.比较含退格的字符串
Flink | multi stream conversion
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
Supply chain supply and demand estimation - [time series]
随机推荐
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
2022-7-7 Leetcode 844. Compare strings with backspace
The difference between memory overflow and memory leak
postgresql array类型,每一项拼接
requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
Regular expression integer positive integer some basic expressions
"New red flag Cup" desktop application creativity competition 2022
Vmware共享主机的有线网络IP地址
【立体匹配论文阅读】【三】INTS
Supply chain supply and demand estimation - [time series]
Flink | multi stream conversion
数据流图,数据字典
Realization of search box effect [daily question]
UML 状态图
The delivery efficiency is increased by 52 times, and the operation efficiency is increased by 10 times. See the compilation of practical cases of financial cloud native technology (with download)
Excuse me, when using Flink SQL sink data to Kafka, the execution is successful, but there is no number in Kafka
118. 杨辉三角
Lavarel之环境配置 .env
得物客服热线的演进之路