添加支持PropertyChangedCallback的动态属性的最佳实践
本文关键字:最佳 属性 动态 支持 PropertyChangedCallback 添加 | 更新日期: 2023-09-27 18:08:40
我有一个对象的集合,有三个属性(x1,x2,x3)和PropertyChangedCallback用于该属性。
这个集合绑定到一个Wpf DataGrid。然后我想添加一个动态属性(用户定义的不是我)到这个对象的公式,如"x1+x2"与PropertyChangedCallback支持,当x1改变时,动态属性也引发propertychanged。
解决这种情况的最佳实践是什么?
一开始你可以声明一个Dictionary <字符串,对象>属性;在你的课堂上。在运行时,将属性名称作为Key添加到字典中,并为相应的键添加属性值。使用IValueConverter将字典绑定到视图。在转换器Convert方法中,编写代码以使用键或索引获取动态属性的值。每当属性x1或x2更改时,更新x3值(x1 + x2),然后为x1/x2和字典引发属性更改通知。
,
private Dictionary< string,object > properties;
public Dictionary<string, object> Properties
{
get { return properties; }
set { properties = value; }
}
private int x1;
public int X1
{
get { return x1; }
set
{
x1 = value;
UpdateDictionaryValue(); // Updates the current X3 Value
OnPropertyChanged("X1");
OnPropertyChanged("Properties");
}
}
public void UpdateDictionaryValue()
{
if (Properties.ContainsKey("X3"))
{
Properties["X3"] = X1 + X2;
}
}