我在ReactiveObject 中有这个属性:
bool IsValid => Children.All(child => child.IsValid);
问题在于,当孩子被修改时,它不会提出任何变更通知(他们的" IsValid"属性)。
如何在ReactiveUI中以正确的方式完成?
注意:
答案 0 :(得分:4)
<强> ObservableAsPropertyHelper&LT; bool&gt; 是您所需要的,如果 Children 属性是一个被动列表,您可以合并已更改和 ItemChanged observables,有类似的东西:
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; }
}