5
我的ViewModel中有幾個命令,我希望每個按鈕的CanExecute都綁定到一個可觀察的忙,它被定義爲當前沒有任何按鈕正在執行。如何讓ReactiveCommands觀察他們自己的IsExecuting可觀察的
以下是我想到的,但顯然它會運行到NullReferenceException中。
busy = Observable.CombineLatest(this.PlayCommand.IsExecuting, this.PauseCommand.IsExecuting, (play, pause) => play && pause);
this.PauseCommand = new ReactiveCommand(busy.Select(b => !b));
this.PlayCommand = new ReactiveCommand(busy.Select(b=> !b));
同樣在ReactiveCommand的CanExecuteObservable屬性是隻讀的,所以我必須先初始化命令定義的IObservable。
關於如何解決雞和雞蛋問題的任何想法?觀察忙碌狀態的視圖模型(或的ViewModels的集合)的一種更好的方式將還讚賞:-)
大,很好地工作。從來沒有想到這一點,我只會責怪'科目是壞' - 曼陀羅正在傳播:-)。另外,最後一行應該包含'.Subscribe(n => areAllAvailable.OnNext(n))'來更新主題。 – Wouter
受試者不一定是'壞',他們只是功能不夠。它們實際上對於將現有代碼適配到Rx非常有用,因爲該代碼可能不是功能性的! –