簡體   English   中英

如何在不使用setter的情況下實現INotifyPropertyChanged?

[英]How to implement INotifyPropertyChanged without setter?

我需要在我的類中實現INotifyPropertyChanged(我的目標是,每次刪除'JobDataGroup.Items'中的Item時都更新ListView),但是在每個教程中,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
}

從哪里調用OnPropertyChanged方法都沒有關系,在需要重新評估該屬性時調用它。

由於每次訪問getter時都在重新創建集合,因此使用ObservableCollection沒有意義。 您也可以只使用List並手動引發OnPropertyChanged:

public List<ServiceJobItem> Items { get; private set; }

void UpdateItems() {
    Items = new List<ServiceJobItem>(repVReportsDataSource.GetJobItems().Where(_predicate));
    OnPropertyChanged("Items");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM