我需要在我的类中实现INotifyPropertyChanged(我的目标是,每当“JobDataGroup.Items”中的Item被删除时更新ListView),但是在每个教程中,都会从setter调用OnPropertyChanged。由于我没有制定者,我该怎么办?
我的班级:
public class JobDataGroup : repVReportsDataCommon, INotifyPropertyChanged
{
public ObservableCollection<ServiceJobItem> Items
{
get { return new ObservableCollection<ServiceJobItem>(repVReportsDataSource.GetJobItems().Where(_predicate)); }
}
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
#endregion
}
答案 0 :(得分:1)
从您调用OnPropertyChanged方法的位置开始,在需要重新评估属性时调用它并不重要。
由于每次访问getter时都要重新创建集合,因此使用ObservableCollection是没有意义的。 您也可以只使用List而手动提升OnPropertyChanged:
public List<ServiceJobItem> Items { get; private set; }
void UpdateItems() {
Items = new List<ServiceJobItem>(repVReportsDataSource.GetJobItems().Where(_predicate));
OnPropertyChanged("Items");
}