2010-12-10 6 views
1

Salut J'ai un problème étrange avec CommandBindings dans WPF. J'ajoute CommandBindings dans le constructeur de l'objet. Les liaisons de commande ressemble queLes liaisons de commandes d'application WPF ne fonctionnent pas

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

fonctions qui sont responsables lui correspondant pour l'exécution regarder de cette façon

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

Le problème est que les travaux de commande ne coupe. Je veux dire que si je mets un point d'arrêt dans une autre fonction (copier ou coller), le point d'arrêt ne sera pas touché. Quelqu'un pourrait-il me dire ce que je fais mal ??

+0

Est-ce que le code se rendre à la méthode Copy_Enabled? – Dabblernl

Répondre

0

Les commandes Copy et Paste sont-elles liées à un contrôle dans la fenêtre de votre application? On dirait que le UI ne recherche que la commande Cut et pas deux autres commandes. Assurez-vous que vous avez bien lié les deux autres commandes au UI.

+0

Je n'encombre cette commande à aucun autre contrôle. Je fais juste la limite en classe – losieko

0

Vous devez ajouter KeyGestures aussi

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