Свързването на командите на 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

Трябва да добавите и KeyGestures

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