Привязки команд приложения 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. Я имею в виду, что если я устанавливаю точку останова в любой другой функции (копирование или вставка), точка останова не срабатывает. Может кто-нибудь сказать мне, что я делаю неправильно??


person losieko    schedule 10.12.2010    source источник
comment
Код попадает в метод Copy_Enabled?   -  person Dabblernl    schedule 10.12.2010


Ответы (2)


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

person decyclone    schedule 10.12.2010
comment
Я не привязываю эту команду к какому-либо другому элементу управления. Я просто делаю ограничение в классе - person losieko; 10.12.2010

Вам также необходимо добавить KeyGesture

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