WPF - Comment style le contrôle de menu pour supprimer la marge de gauche?
J'ai ajouté un menu par défaut de contrôle pour mon contrôle de l'utilisateur. J'ai besoin de style le menu pour supprimer la marge de gauche contenant l'espace de l'icône ou une case à cocher. Comment puis-je faire cela?
XAML:
<Menu>
<MenuItem Header="MyMenu" FontSize="10">
<MenuItem Header="Options..." />
<MenuItem Header="About" />
</MenuItem>
</Menu>
Actuellement, il rend comme n'importe quel autre Menu de contrôle de la boîte:
Je ne veux pas de la marge ou de la colonne à gauche des éléments de menu. Ceci est généralement utilisé pour les icônes, etc.
- Pouvez-vous fournir certains de vos xaml?
- veuillez expliquer votre problème et nous fournir votre code XAML.
- J'ai ajouté le code XAML et une capture d'écran de l'affichage par défaut. L'utilisation de la carte est en grande partie sans importance et j'ai enlevé le texte de la question.
- Double Possible de System.Windows.Controls.MenuItem sans zone de l'icône
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas très simple, mais vous devez créer un MenuItemStyle, plus facile grâce à l'Expression Blend:
Il crée une très verbeux ensemble de modèles et de styles, et vous avez besoin de modifier l'élément de menu pour supprimer le fixe la largeur de la première colonne de la grille, puis dans le SubMenuBorder ContentControl modèle, supprimer les rectangles qui forment la trame de fond. J'ai joint un exemple de projet avec des marges supprimé.
Télécharger des exemples de projet ici.
Deux options ici:
Court, simple et direct. Ensemble
ItemsPanelTemplate
pourMenuItem
ouContextMenu
, en fonction de ce genre de menu que vous utilisez (voir détails).Radicale. Réécrire
Menu
style à partir de zéro. Il y a deux prêts à utiliser les styles:Menu
de MahApps.Métro (ordinaire Menu et ContextMenu)Ma façon simple est d'utiliser une marge négative de la Grille dans l'ItemTemplate
voir la réponse complète ici
Je travaillais avec WPF Notifyicon (hardcodet) et supprimé l'icône de la section du menu avec ce code:
Pour supprimer l'espace et de ne jamais utiliser les icônes que vous avez à changer le modèle de MenuItem.SubmenuItemTemplateKey ou le modèle de MenuItem.
Si vous avez juste besoin de lire de la ligne verticale et de continuer à utiliser les icônes de l'espace de suivre cette answare.
Fenêtres avec grille a mon CustomContextMenu.xaml comme une grille de ressources:
Voici mon CustomContextMenu.xaml qui a un CustomSeparatorStyle modèle de prolonger la ligne de séparation de la marge de gauche du menu de contexte. Et un ContextMenu modèle pour masquer la ligne verticale.
Le droit sude menu est créé avec le code ci-dessus. Vous pouvez remarquer la différence de taille et d'ombre. Afin de garder l'ombre du menu initial, vous devez exclure de la Frontière.Effet
Simpal et de Trier de manière ci-dessous:
Créer un ItemsPanelTemplate ressources
Ajouter ci-dessous les MenuItem style de ressources et vous êtes fait.
À appliquer le même Style à un ContextMenu, vous devez créer un Style de plus comme ci-après -
également au-dessus de celle du menu contextuel, vous devez ajouter
donc, il va remplacer l'icône de l'espace d'exposition et textblock.C'est le simple et la plus facile solution.
Utiliser un RadMenuGroupItem.
Et voilà le résultat:
Merci pour fonctionner idée. Pour .net Framework 4.5 et VS 2012, j'ai écrit pour ContextMenu et MenuItem en conséquence: