簡體   English   中英

屬性值更改時如何更新從屬屬性?

[英]How to update Dependent Property when a property value changes?

我有兩個屬性的課程

public List<ChildMember> ChildMember
        {
            get
            {
                if (_ChildMember == null)
                {
                    _ChildMember = this.UserRole == EUserRole.SalesExecutive ? this.GetMembers(this.LogonName, this.FilterByMID) : this.GetChildMembers();
                }
                return _ChildMember;
            }
            set
            {
                _ChildMember = value;
            }
        }
        public int FilterByMID{ get; set; }

基本上,我需要做的是每次更改FilterByMID值時刷新ChildMember列表。 我知道我可以在更新this.ChildMember = null之前設置this.ChildMember = null ,但是我想知道這是否是使用INotifyPropertyChanged的好地方,或者是更好的方法? 任何幫助,將不勝感激。

PS:GetMembers()方法具有檢查0和-ve值的邏輯,以防打擾您:)

PS:此類位於類庫中,但由ASP.NET WebApplication使用,而不是WCF / WPF使用...當我搜索INotifyPropertyChanged時,我注意到有很多關於WCF / WPF的帖子,所以只是想澄清一下。

如果您僅在該類中執行一次此操作,那么我不介意引入INotifyPropertyChanged因為您必須在設置器中為FilterByMID發出通知,然后連接事件處理程序以在其中更新另一個屬性。

但是,如果您有多個類和實例需要彼此觀察屬性的變化,則這可能是一種更合適的方法。

在這方面也有一些有趣的框架。 Reactive Extensions,Rx.NET和(在以前的基礎上構建的)Reactive UI就是其中的一個示例,它具有不僅適合於用戶界面編程的組件。

您只需要清除FilterByMyID setter中的字段FilterByMyID

INotifyPropertyChanged允許您通知其他人屬性已更改。
在類中直接使用它只會使您的代碼更加復雜。

暫無
暫無

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

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