2010-12-10 16 views
1

Hallo Ich habe ein seltsames Problem mit CommandBindings in WPF. Ich füge CommandBindings im Konstruktor des Objekts hinzu. Die Befehlsbindungen sehen aus wie dieWPF Application Command Bindings funktioniert nicht

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 Funktionen, die für verantwortlich sind, die Ausführung so aussehen

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

Das Problem ist, dass nur Befehl funktioniert schneiden. Ich meine, wenn ich einen Haltepunkt in irgendeiner anderen Funktion (kopieren oder einfügen) setze, wird der Haltepunkt nicht getroffen. Könnte mir jemand sagen, was ich falsch mache?

+0

Ist der Code zu erhalten, um die Copy_Enabled Methode hinzufügen? – Dabblernl

Antwort

0

Sind die Befehle Copy und Paste an ein beliebiges Steuerelement in Ihrem Anwendungsfenster gebunden? Sieht aus wie der nur nach Cut Befehl und nicht anderen zwei Befehlen sucht. Stellen Sie sicher, dass Sie andere zwei Befehle an die gut gebunden haben.

+0

Ich kann diesen Befehl keinem anderen Steuerelement zuweisen. Ich mache einfach die Grenze in der Klasse – losieko

0

Sie benötigen KeyGestures auch

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