2012-03-01 7 views
0

私はWPFデータグリッドにバインドされているReactiveCollectionを持っています。列の1つがcheckBox列です。最新のCanExecute値を取得するReativeCommandを取得するには?

WPFフォームには、ReactiveCommandにバインドされたボタンがあります。

私がしようとしているのは、すべてのチェックボックスがオンになっている場合にのみ、ボタンを有効にすることです。

 var canHitContinueButton = this.WhenAny(x => x.MyCollection, ticks => ticks.Value.All(y => y.IsSelected)); 

     Continue = new ReactiveCommand(canHitContinueButton); 

     Continue.Subscribe(doSomething =>()); 

ReactiveCommandだけで、それがインスタンス化された値をチェックしているようですが、しない値を再確認したときにReactiveCollection変更内の項目。 (ReactiveCollectionのアイテムはReactiveObjectsなので、自動的にすべてをトリガーする必要があると私は考えていました)

ReactiveCollectionのReactiveObjectの変更に対応するボタンを取得するにはどうすればよいですか?

答えて

0

OK、ついにそれを解決しました。私は2つの異なるアプローチを考え出しましたが、それが最善の方法であるかどうかは分かりません。

最初はReactiveCollection.Changedイベントを使用:述語がコレクションに関係なく変更チェックボックスに関連するか否かを変更するたびに実行されるにつれて

CanHitToggleButton = Customers.Changed.Select(_ => Customers.All(x => x.IsSelected)).StartWith(false); 

この解決策は、高価であってもよいです。

他の解決策は、チェックボックスの値が変更されたときにのみトリガされます。

CanHitToggleButton = Customers.ItemChanged.Where(x => x.PropertyName == "IsSelected").Select(_ => Customers.All(x => x.IsSelected)).StartWith(false); 
関連する問題