2012-08-30 1 views
0

Je cherche un moyen de créer une ressource globale pour toutes les fenêtres de mon projet WPF. je différentes fenêtres avec différents contrôles, mais ils doivent tous avoir le même menu ce menu par exemple contexte contextuel pour un bouton:Ressource de menu contextuel global pour toutes les fenêtres

 <Button.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="1"/> 
       <MenuItem Header="More"> 
        <MenuItem Header="2"/> 
        <MenuItem Header="2" IsCheckable="True"/> 
        <MenuItem Header="2" IsCheckable="True"/> 
        <MenuItem Header="2" IsEnabled="False"/> 
        <MenuItem Header="More"> 
         <MenuItem Header="3"/> 
         <MenuItem Header="More"> 
          <MenuItem Header="4"/> 
         </MenuItem> 
        </MenuItem> 
       </MenuItem> 
      </ContextMenu> 
     </Button.ContextMenu> 

devrait également être possible d'utiliser sur une étiquette dans une autre fenêtre propre.

quelque chose comme ceci:

resource file: contextMenu 
wpf form 1: use contextMenur resource for button 
wpf form 2: use contextMenur resource for label 
wpf form 3: use contextMenur resource for combobox 

tous les tutoriels de ressources que je ne lis que avait la ressource disponible dans la même fenêtre

Répondre

2

Ajoutez dans le fichier App.xaml, section <Application.Resources>.

<Application ...> 
    <Application.Resources> 
     <SolidColorBrush x:Key="somebrush" ... /> 
    </Application.Resources> 
</Application> 

Ailleurs:

<Grid Background="{StaticResource somebrush}"> 
     ... 
    </Grid> 

(à partir SCTM Kit de formation Windows Applications développement par MA Stoecker)

D'où vous mettriez le ContextMenu dans les ressources, lui donner un x: Key, et puis écrire

<Button ...> 
     <Button.ContextMenu> 
      <StaticResource ResourceKey="keyThatWasGiven" /> 
     </Button.ContextMenu> 
    </Button> 
+0

merci que la solution. Y at-il un moyen maintenant d'avoir des propres événements de ce menu contextuel dans les différentes fenêtres? – dontcare

+0

Définir des commandes personnalisées, peut-être? – JohnB

2

Vous pouvez le mettre dans un ResourceDictionary autonome et refe à Window en utilisant le MergedDictionaries (voir la section des exemples).

Questions connexes