繁体   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