2 votes

Remplacer le style par défaut du ContextMenu en C# (WPF)

J'ai un problème en essayant de changer le style du ContextMenu par défaut dans WPF. Je ne veux pas remplacer le ContextMenu, je veux simplement remplacer le STYLE du ContextMenu. Dans tous les sites, il est dit que je dois créer chaque MenuItem du ContextMenu, mais je veux utiliser les MenuItems par défaut, et seulement changer le style et ajouter une bordure en arrière-plan. Comment puis-je le faire ?

<Style TargetType="{x:Type ContextMenu}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Grid.IsSharedSizeScope" Value="true" />
    <Setter Property="HasDropShadow" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContextMenu}">
                <Border x:Name="Border" Background="#000" BorderThickness="1">
                    <ScrollViewer x:Name="ScrollViewer">
                        <ItemsPresenter />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

2voto

NoOne Points 489

Assurez-vous que :

  • Le dictionnaire de ressources est chargé et non déchargé plus tard dans votre code. (Autant que je me souvienne, la liste des dictionnaires de ressources chargés peut être trouvée dans Application.Current.Resources.MergedDictionaries )
  • Vous ne définissez pas le style ou les autres propriétés du ContextMenu cible dans sa déclaration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X