[英]WPF - OnPropertyChanged for a property within a collection
在視圖模型中,我有一組名為“ClassA”的項目,稱為“MyCollection”。 ClassA有一個名為“IsEnabled”的屬性。
class MyViewModel
{
List<ClassA> 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屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.