2010-10-19 24 views
1

J'ai un Microsoft Ribbonbar dans une fenêtre, et chaque RibbonButton est associé à une commande spécifique comme celui-ci:Comment forcer un RibbonButton à être toujours activé?

<ribbon:Ribbon x:Key="MyToolbar" Name="MyToolbar" >   
<ribbon:RibbonTab Header="File" > 
<ribbon:RibbonGroup Header="File" > 
<ribbon:RibbonButton Command="{x:Static ApplicationCommands.New}" LargeImageSource="Images/GenericDocument.png" Label="Nuovo" /> 
<ribbon:RibbonButton Command="{x:Static ApplicationCommands.Open}" SmallImageSource="Images/OpenFolder.png" Label="Apri" /> 
</ribbon:RibbonGroup> 
</ribbon:RibbonTab> 
</ribbon:Ribbon> 

Je manipuler les commandes de cette manière dans le code-behind d'un objet Canvas spécifique placé dans la même fenêtre:

private void BindApplicationCommands() 
{ 
// FILE group 
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.New, New_Executed)); 
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, Open_Executed,Open_Enabled)); 
} 

Lorsque je clique sur en dehors le composant toile où le code de traitement est placé, tous les boutons à l'intérieur du ruban se désactiver pour être d. Ceci est un comportement indésirable, puisque je veux que certains boutons spécifiques (comme les commandes "Nouveau" et "Open") sont toujours et globalement activé, en dépit de l'endroit où je clique. Comment puis-je y parvenir? Merci d'avance pour toute suggestion.

Répondre

1

Ok, j'ai résolu mon propre problème. Puisque les CommandBindings étaient définis à l'intérieur du composant Canvas, ils n'étaient pas gérables dans un contexte (global) plus large, donc je les ai déplacés dans le code-behind de Windows pour déléguer leur exécution/activation d'une manière plus flexible. C'est tout :)

+0

Même si vous étiez le seul à répondre à la question, vous devriez toujours marquer cela comme la réponse. –

+0

Je le ferai quand le système me le permettra. Il y a une limite de 2 jours-attendre (pour mon profil) avant que je puisse le faire. – NinjaCross