2017-01-18 9 views
2

次の問題があります。私は何を私が達成したいことはとき、これまでの任意の項目で...リアクティブリスト内のオブジェクトのプロパティを観察する方法

this.itemsLeft = this 
      .WhenAny(x => x.Ticks, x => x.Value) 
      .ToProperty(this, x => x.ItemsLeft, scheduler: DispatcherScheduler.Current); 

ProductionOrderViewModelが内部

private readonly ObservableAsPropertyHelper<int> itemsLeft; 


    public int ItemsLeft => this.itemsLeft.Value; 

更新されるプロパティItemsleftを、持っている ProductionOrderList = new ReactiveList<ProductionOrderViewModel>();

を持っていますリストは、Itemsleftプロパティが0である点に来て、リストから削除する必要があります。

私はこの方法

ProductionOrderList.ItemChanged.Where(x => x.Sender.ProductionOrder.ItemsLeft ==0) 
       .Subscribe(v => 
       { 
        // do stuff 
       }); 

それを試してみましたが、それは残念ながら動作しませんでした。

助けを非常に感謝します。

答えて

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

これは、同様の問題を抱えている他の人に役立つことを願っています。

関連する問題