Skip to main content
 首页 » 编程设计

c#之如何访问 C# 属性的方法 (特别是如果属性是一个集合并使用 INotifyPropertyChanged 接口(interface))

2024年01月31日30jiqing9006

假设我们有 List 类型的 SomeProperty,我们有 get 和 set 方法

public List<SomeClass> SomeProperty 
{ 
    get 
    { 
        //return something 
    } 
    set 
    { 
        //set something 
    } 
} 

我想知道在调用 SomeProperty 的方法(即 SomeProperty.Add(someObject);)时是否调用了 get 或 set 方法。

我想知道,因为我有一个 wpf 窗口,它有一个列表作为属性(我们称之为 ListProperty),它需要更新另一个显示属性(我们称之为 DisplayProperty) 使用 INotifyPropertyChanged 的​​实现方法。我想知道是否应该将 OnPropertyChanged 事件放在 get 或 set 中

即:

public List<SomeClass> ListProperty 
{ 
    get 
    { 
        //return something 
    } 
    set 
    { 
        OnPropertyChanged("DisplayProperty"); 
    } 
} 

或者有没有更好的方案可以达到这个效果?

请您参考如下方法:

不,setter 不会被任何修改集合的东西调用。 ObservableCollection 类的存在就是为了这个特定的目的——您可以用它来代替您的列表。您仍应使用 INotifyPropertyChanged 并将其作为具有更改通知的属性,以便在替换整个集合时触发该事件。

编辑,示例:

public ObservableCollection<SomeClass> SomeProperty 
{ 
    get 
    { 
        return _someProperty; 
    } 
    set 
    { 
        if (_someProperty == value) return; 
        _someProperty = value; 
        OnPropertyChanged("SomeProperty"); 
    } 
}