ReactiveCommand CanExecute не обновляет кнопку
Я настроил бизнес-логику обработки соединения программного обеспечения клиента с программным обеспечением сервера.
Этот BL инкапсулирован в этот интерфейс:
public interface IServerConnectionLogic
{
IObservable<bool> Connected { get; }
Task Connect();
//...
}
В моей viewmodel (на основе ReactiveObject) я создаю свои команды, которые должны запускать соединение с сервером:
CmdConnectToService = new ReactiveCommand(ServerConnectionLogic.Connected.Select(connected => !connected));
CmdConnectToService.Subscribe(_ => ServerConnectionLogic.Connect());
Команда привязана к кнопке в моем UI-XAML.
При нажатии кнопки запускается подписанная лямда и вызывается метод "Соединить". Внутри наблюдаемого "Подключено" установлено значение "истина".
Также указывается лямбда в параметре "CanExecute" конструктора команды ReactiveCommand.
Но пользовательский интерфейс не обновляется. Я бы ожидал, что кнопка будет отключена, потому что наблюдаемое "Подключено" превращается в "true", а выражение "Select" инвертирует мое логическое значение...
Я пробовал это с "RibbonButton" от WpfToolkit, а также с "нормальной" кнопкой. Оба не обновляются.
Тот же IObservable также связан с полем члена:
m_ServerConnected = new ObservableAsPropertyHelper<bool>(ServerConnectionLogic.Connected, _ => raisePropertyChanged("ServerConnected"));
в то время как "m_ServerConnected" привязан к CheckBox (для тестирования) через свойство. Этот работает нормально, поэтому наблюдаемое должно работать...
У кого-нибудь есть идея, в чем может быть моя проблема?