假设我们有 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");
}
}
关于c# - 如何访问 C# 属性的方法? (特别是如果属性是一个集合并使用 INotifyPropertyChanged 接口(interface)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058354/