Seb*_*ier 5 wpf binding icommand
在我的WPF UI中,我通过以下代码使用我在xaml中引用的RoutedCommands:
Command="viewModel:MessageListViewModel.DeleteMessagesCommand"
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个到我的ViewModel类的静态链接,我认为这不如创建自定义ICommand实现那样好,并使用如下语法
Command="{Binding DeleteMessagesCommand}"
Run Code Online (Sandbox Code Playgroud)
创建一个后,我注意到我所做的一个主要缺点:RoutedCommands使用CommandManager并且(以某种方式对我来说完全不透明)触发CommandManager.RequerySuggested事件,以便自动重新获取它们的CanExecute方法.至于我的自定义实现,CanExecute只在启动时触发一次,之后再也不会再触发.
有没有人有这个优雅的解决方案?
只需实现CanExecuteChanged如下事件:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
Run Code Online (Sandbox Code Playgroud)
将命令分配给控件时,它会订阅该CanExecuteChanged事件.如果您将其"重定向"到CommandManager.RequerySuggested事件,则会在CommandManager.RequerySuggested触发时通知控件.
| 归档时间: |
|
| 查看次数: |
5711 次 |
| 最近记录: |