我有以下问题。我有
一个ProductionOrderList = new ReactiveList<ProductionOrderViewModel>();
ProductionOrderViewModel
有一个Property 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
});
但遗憾的是它没有用。
非常感谢帮助。
答案 0 :(得分:4)
所以我找到了一个有效的解决方案,它看起来既干净又干净,尽管我完全乐于改进。我做了以下
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);
});
我希望这有助于其他有类似问题的人。