Comment : créer un ContextMenu partagé
Mise à jour : novembre 2007
Vous pouvez partager un ContextMenu avec plusieurs contrôles en définissant le ContextMenu en tant que ressource et en définissant la propriété ContextMenu des contrôles sur une référence du ContextMenu. Vous pouvez indiquer si les contrôles partagent le même ContextMenu ou si chaque contrôle possède son propre ContextMenu en définissant la propriété x:Shared, attribut.
Exemple
L'exemple suivant crée un ContextMenu en tant que ressource et attribue les références à quatre contrôles. L'exemple définit l'attribut x:Shared (voir x:Shared, attribut) de ContextMenu sur la valeur true. Ainsi, les quatre contrôles partagent la même instance de ContextMenu. Pour le vérifier, consultez le premier MenuItem dans le ContextMenu d'un contrôle et assurez-vous que le MenuItem est activé dans le ContextMenu des autres contrôles.
<ContextMenu x:Key="SharedInstanceContextMenu" x:Shared="True">
<MenuItem Header="This MenuItem is checkable" IsCheckable="True" />
<Separator/>
<MenuItem Header="This is a regular MenuItem" />
</ContextMenu>
...
<Button Margin="0,5,0,0" Background="LightBlue"
Content="This Button has a ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<Button Background="Pink"
Content="This Button has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
L'exemple suivant crée un ContextMenu en tant que ressource et attribue les références à quatre contrôles. L'exemple définit l'attribut x:Shared (voir x:Shared, attribut) de ContextMenu sur la valeur false. Ainsi, une nouvelle instance de ContextMenu est utilisée pour chaque contrôle. Pour le vérifier, consultez le premier MenuItem dans le ContextMenu d'un contrôle et assurez-vous que le MenuItem est désactivé dans le ContextMenu des autres contrôles.
<ContextMenu x:Key="NonsharedInstanceContextMenu" x:Shared="False">
<MenuItem Header="This MenuItem is checkable" IsCheckable="true" />
<Separator/>
<MenuItem Header="This is a regular MenuItem" />
</ContextMenu>
...
<Button Background="LightBlue" Margin="0,5,0,0"
Content="This Button has a ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<Button Background="Pink"
Content="This Button has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
Pour l'exemple complet, consultez ContextMenu partagé entre des contrôles, exemple.
Voir aussi
Tâches
Comment : activer un ContextMenu sur un contrôle désactivé