Привязки команд приложения WPF не работают
Привет у меня странная проблема с CommandBindings в WPF. Я добавляю CommandBindings в конструктор объекта. Привязка команд выглядит так
CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy,Copy_Executed,Copy_Enabled));
CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut,Cut_Executed,Cut_Enabled));
CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste,Paste_Executed,Paste_Enabled));
Соответствующие функции, отвечающие за выполнение, выглядят именно так
private void Paste_Enabled(object sender,CanExecuteRoutedEventArgs e)
{
e.CanExecute = selectionService != null && selectionService.CurrentSelection.Count > 0;
}
private void Paste_Executed(object sender, ExecutedRoutedEventArgs e)
{
if (GetSelected() != null)
Paste(true);
else
Paste(false);
}
private void Copy_Executed(object sender, ExecutedRoutedEventArgs e)
{
Copy();
}
private void Copy_Enabled(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = selectionService.CurrentSelection.OfType<DesignerItem>().Count() > 0;
}
#endregion
private void Cut_Executed(object sender, ExecutedRoutedEventArgs e)
{
Copy();
DeleteCurrentSelection(false);
}
private void Cut_Enabled(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = this.SelectionService.CurrentSelection.Count() > 0;
}
Проблема в том, что работает только команда cut. Я имею в виду, если я устанавливаю точку останова в любой другой функции (копирование или вставка), точка останова не срабатывает. Может кто-нибудь сказать мне, что я делаю неправильно?
2 ответа
Вам также необходимо добавить KeyGestures
InputBindings.Add(new InputBinding("YourCommand" ,ApplicationCommands.Copy.InputGestures[0])) // Default Gesture is Ctrl+C
Являются Copy
а также Paste
Команды привязаны к любому элементу управления в окне вашего приложения? Выглядит как UI
только ищет Cut
команда, а не две другие команды. Убедитесь, что вы связали две другие команды с UI
Что ж.