WPF – 集合中属性的OnPropertyChanged
在视图模型中,我有一个名为“ClassA”的项目集合,称为“MyCollection”。 ClassA有一个名为“IsEnabled”的属性。
class MyViewModel { List MyCollection { get; set; } class ClassA { public bool IsEnabled { get; set; } } }
我的视图有一个绑定到MyCollection的数据网格。 每行都有一个按钮,其“IsEnabled”属性绑定到ClassA的IsEnabled属性。
当视图模型中的条件发生更改以使MyCollction列表中的某个特定项需要禁用时,我将IsEnabled属性设置为false:
MyCollection[2].IsEnabled = false;
我现在想要通过OnPropertyChanged事件通知此更改的视图,但我不知道如何引用集合中的特定项目。
OnPropertyChanged("MyCollection"); OnPropertyChanged("MyCollection[2].IsEnabled");
两者都不起作用。
如何通知查看此更改? 谢谢!
ClassA需要实现INotifyPropertyChanged:
class ClassA : INotifyPropertyChanged { private bool _isEnabled; public bool IsEnabled { get { return _isEnabled; } set { if (value != _isEnabled) { _isEnabled = value; OnPropertyChanged("IsEnabled"); } } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }
编辑:并使用像斯科特所说的ObservableCollection
EDIT2:调用PropertyChanged事件更短
不要使用List,而是尝试使用ObservableCollection。 此外,修改ClassA以使其实现INotifyPropertyChanged,特别是对于IsEnabled属性。 最后,修改MyViewModel类,使其实现INotifyPropertyChanged,尤其是MyCollection属性。
上述就是C#学习教程:WPF – 集合中属性的OnPropertyChanged分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002115.html