У меня есть класс 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'
.
Я новичок в командах, поэтому вполне возможно, что я здесь неправ. Любая помощь будет оценена.