ReactiveCommand CanExecute不是更新按钮

时间:2014-07-04 15:59:05

标签: c# wpf system.reactive reactiveui commandbinding

我已经设置了业务逻辑来处理客户端软件与服务器软件的连接。

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中的按钮。

按下按钮时,会点击订阅的lamda并调用“Connect”方法。 在Observable内部,“已连接”设置为“真实。

此外,还会触发ReactiveCommand构造函数的“CanExecute”参数中的lambda。

但是UI没有更新。我希望按钮被禁用,可观察的“已连接”变为“真”,而“选择”语句反转我的布尔值......

我曾尝试使用WpfToolkit中的“RibbonButton”以及“普通”按钮。两者都没有得到更新。

同样的IObservable也绑定到成员字段:

m_ServerConnected = new ObservableAsPropertyHelper<bool>(ServerConnectionLogic.Connected, _ => raisePropertyChanged("ServerConnected"));

而“m_ServerConnected”通过属性绑定到CheckBox(用于测试)。那个工作正常,所以观察者必须工作......

有没有人知道我的问题是什么?

0 个答案:

没有答案