Désactiver l'ensemble du Menu Contextuel
Je sais qu'il existe un moyen de bloquer ou maintenant montrer menu contextuel en utilisant ContextMenuOpening événement.
Mais je veux encore pour afficher le menu contextuel, il suffit de désactiver tout ce qu'il contient, est-il un moyen de le faire?
Comment puis-je désactiver tous les élément de menu en même temps?
<DataTemplate x:Key="ItemDataTemplate">
<Grid Background="Transparent">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="New" Click="New_Click" />
<Separator />
<MenuItem Header="Duplicate" Click="Duplicate_Click"/>
<MenuItem Header="Delete" Click="Delete_Click" />
<MenuItem Header="Rename" Click="Rename_Click" />
<Separator />
<MenuItem Header="Export..." Click="Export_Click" />
<MenuItem Header="Print..." Command="ApplicationCommands.Print" InputGestureText="" />
<Separator />
<MenuItem Header="Properties" Click="Properties_Click" />
</ContextMenu>
</Grid.ContextMenu>
<StackPanel Orientation="Horizontal"
Margin="0,0,10,0"
HorizontalAlignment="Stretch"
Background="Transparent"
IsHitTestVisible="False">
</StackPanel>
</Grid>
</DataTemplate>
OriginalL'auteur CodingTT | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
IsEnabled = false
sur leContextMenu
?Edit: Comme il semble y avoir des problèmes lors de la fermeture de ce faire, je vous suggère un conteneur de style:
Bien sûr, la valeur réelle peut être lié en tant que bien, mais dans le conteneur de style, le contexte est l'élément individuel, de manière à lier le contexte parent d'un
RelativeSource
de liaison est nécessaire (à moins que l'objet de données dispose aussi d'une connexion à la société mère).HB, j'ai le même problème, j'ai essayé ceci (en XAML et j'ai lié la propriété IsEnabled à un drapeau dans mon ModelView), mais maintenant mon menu contextuel l'habitude de disparaître après son ouverture.
Voir les modifications.
Je n'ai aucune idée de pourquoi je n'ai pas ce que tu disais la première fois autour. De toute façon, vous pouvez utiliser un liaison de données expression à la place de la
false
-littérale. Bien que les liaisons dansContextMenus
peut être délicat...Mettre un DataTrigger dans le Style et vous y êtes. ` <ContextMenu.ItemContainerStyle > <Style TargetType="MenuItem" > <Style.Les déclencheurs> <DataTrigger Binding="{Binding RulesEditing}" Value="True"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> </Style.Les déclencheurs> </Style> </ContextMenu.ItemContainerStyle>`
OriginalL'auteur H.B.
Pour moi, le réglage de IsEnabled à Faux de même fait un petit vide menu contextuel pour être visible. Après avoir changé sa visibilité attribut, c'était vraiment désactivé.
OriginalL'auteur Aaron
L'ensemble du menu contextuel peut être désactivé à la racine de la
ContextMenu
par la définition de laIsEnabled
valeur false à la propriété; il n'y a pas besoin d'une boucle sur chaque élément de menu dans le code.Ou
Cela permettra d'activer le menu contextuel pour être vu, mais tous les éléments seront désactivées.
OriginalL'auteur Metro Smurf
Voici comment je m'y résoudre ma question.
Toujours utiliser ContextMenuOpening événement
utiliser une boucle
Ce pourquoi peut m'aider à désactiver certaines menu contextuel de l'élément dans le code, mais pas dans le code xaml.
OriginalL'auteur CodingTT
Voici comment je m'y résoudre ma question.
OriginalL'auteur Porcescu Gheorghii
J'ai utilisé
ContextMenu="{x:Null}"
pour désactiver le Menu Contextuel dans la zone de texte.OriginalL'auteur JB9