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

У кого-нибудь есть идея, в чем может быть моя проблема?

0 ответов

Другие вопросы по тегам