【发布时间】:2009-03-03 11:58:57
【问题描述】:
我有一个 ViewModel 类,我想响应按钮触发的内置 Refresh 命令,但我不确定如何声明 CommandTarget。
简单来说,我的代码如下
ViewModel 构造函数以及 CanExecute 和 Executed 事件处理程序 -
public ViewModel()
{
CommandBinding binding = new CommandBinding(NavigationCommands.Refresh, CommandHandler);
binding.CanExecute += new CanExecuteRoutedEventHandler(binding_CanExecute);
binding.Executed += new ExecutedRoutedEventHandler(binding_Executed);
CommandManager.RegisterClassCommandBinding(typeof(ViewModel), binding);
}
void binding_Executed(object sender, ExecutedRoutedEventArgs e)
{
Debug.Print("Refreshing...");
}
void binding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
标记是 -
<Button Command="Refresh">refresh</Button>
现在,我已尝试将此按钮上的 CommandTarget 设置为 {Binding Source={StaticResource ViewModel}},但运行时显示为 Cannot convert the value in attribute 'CommandTarget' to object of type 'System.Windows.IInputElement'。
我是命令新手,所以我完全有可能在这里搞错了。任何帮助将不胜感激。
【问题讨论】: