Csharp/C#教程:WPF – 集合中属性的OnPropertyChanged分享


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

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐