簡體   English   中英

如何在一個屬性更改時更新其他從屬屬性

[英]How to update other dependent property on change of one property

假設在C#WPF類中我有類似以下內容:

class test: INotifyPropertyChanged
{
    private datetime _DOB
    public datetime DOB 
    {
        get
        {
            return _DOB;
        }
        set
        {
            if (_DOB != value)
            {
                _DOB = value;
                RaisePropertyChanged();
            }
        }
    }

    private int _age
    public int Age 
    {
        get
        {
            return _age;
        }
        set
        {
            if (_age != value)
            {
                _age = value;
                RaisePropertyChanged();
            }
        }
    }
....

}

現在,讓我們假設用戶可以輸入任何屬性。 他們可以輸入DOB或年齡,因此使其中之一成為計算所得的屬性將無效。

除了使用類似的方法UpdateAge()在DOB和二傳手UpdateDOB()在時代的二傳手,有沒有會自動與依賴屬性(INPC需要照顧)一起更新了“依賴”性質的任何其他方法?

是否有其他方法可以自動更新“依賴”屬性以及依賴屬性(由INPC處理)?

這里沒有“自動”或魔術。 您需要設置背景字段,並為要在視圖中刷新的數據綁定屬性引發PropertyChanged事件。

只要確保您不會陷入無限循環,就可以從DOB屬性設置Age屬性,反之亦然。

您可以在DOB屬性的設置器中設置_ age backing字段,反之亦然,例如:

private DateTime _DOB;
public DateTime DOB
{
    get
    {
        return _DOB;
    }
    set
    {
        if (_DOB != value)
        {
            _DOB = value;
            RaisePropertyChanged();

            _age = DateTime.Now.Year - _DOB.Year;
            RaisePropertyChanged("Age");
        }
    }
}

暫無
暫無

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

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