如何观察ReactiveList中对象的属性

时间:2017-01-18 15:29:58

标签: reactiveui

我有以下问题。我有 一个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
               });

但遗憾的是它没有用。

非常感谢帮助。

1 个答案:

答案 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);
            });

我希望这有助于其他有类似问题的人。