添加支持PropertyChangedCallback的动态属性的最佳实践

本文关键字:最佳 属性 动态 支持 PropertyChangedCallback 添加 | 更新日期: 2023-09-27 18:08:40

我有一个对象的集合,有三个属性(x1,x2,x3)和PropertyChangedCallback用于该属性。

这个集合绑定到一个Wpf DataGrid。然后我想添加一个动态属性(用户定义的不是我)到这个对象的公式,如"x1+x2"与PropertyChangedCallback支持,当x1改变时,动态属性也引发propertychanged。

解决这种情况的最佳实践是什么?

添加支持PropertyChangedCallback的动态属性的最佳实践

一开始你可以声明一个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;
    }
}