繁体   English   中英

等价于ReactiveUI?

[英]Equivalence in ReactiveUI?

在ReactiveObject中具有此属性:

bool IsValid => Children.All(child => child.IsValid);

问题是,当然,在修改子项(它们的“ IsValid”属性)时,它不会引发任何更改通知。

如何在ReactiveUI中正确地做到这一点?

注意:

  • 子对象也是ReactiveObject。
  • 我可以无限制地修改父级和子级两个类,以满足RxUI的原则和准则。

ObservableAsPropertyHelper <bool>是您所需要的,如果您的Children属性是一个反应性列表,则可以合并ChangedItemChanged Observable并具有以下内容:

public class MyViewModel : ReactiveObject
    {
        private readonly ObservableAsPropertyHelper<bool> _isValidPropertyHelper;

        public MyViewModel()
        {
            var listChanged = Children.Changed.Select(_ => Unit.Default);
            var childrenChanged = Children.ItemChanged.Select(_ => Unit.Default);
            _isValidPropertyHelper = listChanged.Merge(childrenChanged)
                                                .Select(_ => Children.All(c => c.IsValid))
                                                .ToProperty(this, model => model.IsValid);

        }
        public bool IsValid
        {
            get { return _isValidPropertyHelper.Value; }
        }

        public ReactiveList<Item> Children { get; set; }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM