Silverlight - 将按钮上的IsEnabled属性绑定到ViewModel上的属性

Man*_* R. 3 silverlight

我正在构建一个Silverlight应用程序,我想在后台进行长时间运行时禁用按钮.我正在使用MVVM,所以在ViewModel中我有一个名为SearchInProgress的属性.现在我想在SearchInProgress为true时禁用搜索按钮.在WPF中,我只需编写一个DataTrigger,它将搜索按钮上的IsEnabled设置为false.

遗憾的是,DataTriggers在Silverlight中不可用,所以我正在寻找另一种解决方案.我已经尝试过使用VisualStateManager,但我还没有到达任何地方.对于我想要实现的这个简单的事情,VSM似乎有些过分.

任何帮助表示赞赏.

Ric*_*lay 7

为什么不只是创建一个属性并绑定到那个,而不是跳过箍来SearchInProgress=true设置.该属性可以是只读(或具有私有的setter),另一个属性可以代表它触发事件.IsEnabled=falseCanSearchPropertyChanged

最终,视图模型的重点是从视图中删除逻辑.让视图绑定SearchInProgress(因此,使用转换器来否定它IsEnabled)意味着视图可以理解何时应该或不应该能够搜索.CanSearch但是,绑定到属性意味着视图模型可以完全控制何时启用搜索并且视图可以保持愚蠢.

或者,您可以使用与Blend一起安装的Blend behavior API,因为它们具有与数据触发器类似的功能.