2017-03-05 28 views
0

合併兩個布爾可觀察最近,其中Rx工作,我在與合併兩個觀測,並試圖從他們作出命令的麻煩。如何ReactiveX

我有兩個觀測,所以我想從他們做出的命令,並且命令可以執行應該是真實的只有在這些觀測都是如此。這裏是我的代碼:

BuyCommand = playerData.Gold.Select(x => x >= boosterStoreItem.price) 
      .Merge(inventoryItem.CanAddItem.Select(x => x)) 
      .ToReactiveCommand(); 

那麼這段代碼是有點兒工作,但問題是,我有多個BuyCommands(他們沒有分享彼此之間的任何可觀察),如果任何CanAddItem改變狀態,所有BuyCommands CanExecute成爲真正。

我相信我做出與合併,並應在其他的方式來完成一個錯誤。那麼我應該如何解決它?

需要注意的是UniRx器(Rx團結),但它們幾乎相同。

回答

4

以下應該工作:

BuyCommand = playerData.Gold.Select(x => x >= boosterStoreItem.price) 
      .CombineLatest(inventoryItem.CanAddItem.Select(x => x), (x,y) => x && y) 
      .ToReactiveCommand(); 

CombineLatest結合了兩個流,併發布各任一序列發佈一個時間的值。公佈的值基於keySelector參數的結果,在此示例中爲(x,y) => x && y。這意味着只有當兩個數據流結果爲真時,結果纔會成立。

相關問題