2012-03-01 4 views
0

У меня есть ReactiveCollection, связанный с WPat datagrid. Один из столбцов - столбец checkBox.Как получить ReativeCommand, чтобы получить последнее значение CanExecute?

Форма 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, поэтому я предположил, что все должно запускаться автоматически.)

Как я могу получить кнопку для ответа на изменения в ReactiveObjects в ReactiveCollection?

ответ

0

ОК, наконец, отработал. Я придумал два разных подхода, но не уверен, что они лучший способ это сделать.

Первый использует 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); 
Смежные вопросы