2010-12-10 2 views
1

Привет У меня странная проблема с CommandBindings в WPF. Я добавляю CommandBindings в конструктор объекта. Команда привязки выглядят, чтоWPF Application Command Bindings не работает

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)); 

Coresponding функция, которые отвечают за выполнение выглядит таким образом

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; 
    } 

Проблема заключается в том, что только вырезать команду работает. Я имею в виду, если бы я установил точку останова в любом другом funciotn (копировать или вставлять), точка останова не попадает. Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

получить ли код на Copy_Enabled метод? – Dabblernl 2010-12-10 10:40:12

ответ

0

Copy и Paste команды, связанные с любым элементом управления в вашем окне приложения? Похоже, UI только ищет Cut команду, а не другие две команды. Удостоверьтесь, что вы связали другие две команды с колодкой UI.

+0

Я не собираю эту команду для любого другого элемента управления. Я просто делаю ограничение в классе – losieko 2010-12-10 12:29:12

0

Вам нужно добавить KeyGestures также

InputBindings.Add(new InputBinding("YourCommand" ,ApplicationCommands.Copy.InputGestures[0])) // Default Gesture is Ctrl+C