如何观察 ReactiveList 中对象的属性
How to Observe Properties of Objects within an ReactiveList
我有以下问题。我有
一ProductionOrderList = new ReactiveList<ProductionOrderViewModel>();
ProductionOrderViewModel
有一个 属性 Itemsleft,它在内部更新
private readonly ObservableAsPropertyHelper<int> itemsLeft;
public int ItemsLeft => this.itemsLeft.Value;
...
this.itemsLeft = this
.WhenAny(x => x.Ticks, x => x.Value)
.ToProperty(this, x => x.ItemsLeft, scheduler: DispatcherScheduler.Current);
我想要完成的是,当列表中的任何项目到达 Itemsleft 属性 为 0 的点时,它应该从列表中删除。
我这样试过
ProductionOrderList.ItemChanged.Where(x => x.Sender.ProductionOrder.ItemsLeft ==0)
.Subscribe(v =>
{
// do stuff
});
但不幸的是它没有用。
非常感谢您的帮助。
所以我找到了一个可行的解决方案,它甚至看起来很干净,但我完全愿意改进。我做了以下
this.WhenAnyObservable(o => o.ProductionOrderList.ItemChanged)
.Where(x => x.PropertyName == "ItemsLeft")
.Select(x => x.Sender)
.Where(x => x.ItemsLeft == 0)
.Subscribe(x =>
{
ProductionOrderList.Remove(x);
});
希望对遇到类似问题的其他人有所帮助。
我有以下问题。我有
一ProductionOrderList = new ReactiveList<ProductionOrderViewModel>();
ProductionOrderViewModel
有一个 属性 Itemsleft,它在内部更新
private readonly ObservableAsPropertyHelper<int> itemsLeft;
public int ItemsLeft => this.itemsLeft.Value;
...
this.itemsLeft = this
.WhenAny(x => x.Ticks, x => x.Value)
.ToProperty(this, x => x.ItemsLeft, scheduler: DispatcherScheduler.Current);
我想要完成的是,当列表中的任何项目到达 Itemsleft 属性 为 0 的点时,它应该从列表中删除。
我这样试过
ProductionOrderList.ItemChanged.Where(x => x.Sender.ProductionOrder.ItemsLeft ==0)
.Subscribe(v =>
{
// do stuff
});
但不幸的是它没有用。
非常感谢您的帮助。
所以我找到了一个可行的解决方案,它甚至看起来很干净,但我完全愿意改进。我做了以下
this.WhenAnyObservable(o => o.ProductionOrderList.ItemChanged)
.Where(x => x.PropertyName == "ItemsLeft")
.Select(x => x.Sender)
.Where(x => x.ItemsLeft == 0)
.Subscribe(x =>
{
ProductionOrderList.Remove(x);
});
希望对遇到类似问题的其他人有所帮助。