11
votes

Sous-plan du Sous-menu WPF

J'ai un style contextuel et un style Menuitem, qui fonctionnent tous les deux correctement dans le menu supérieur. Le problème est que si j'ajoute un sous-menu à un élément de menu, le sous-menu n'est pas conçu correctement. On dirait que vous ne pouvez que styler la menuem à ce stade, et non le sous-menu réel, vous ne pouvez donc pas remplacer le style ISmouseOVEROVER (il suffit de parra défaut de tout thème activé sur Windows).

J'ai recherché et recherché, la chose la plus proche que je puisse trouver est ce post du forum sur msdn http://social.msdn.microsoft.com/forums/en-us/wpf/thread/69269d23-f97c-42e3-a9dd-0e7c0ba49bdd ? Prof = Obligatoire Mais cela ne répond pas à la question correctement non plus, comme son exemple a le même problème que je rencontre. Toute aide serait appréciée! Merci d'avance.

EDIT: Jay, c'est ce que je fais. Voici quelques codes, dans userercontrol.Resources comme sommet de mon objet. xxx

et quelque chose comme ceci pour le menu xxx

Tout sur la couche NewCommand est de style correctement, allant à l'intérieur de NewCommand pour voir Deletecommand Le menuitem lui-même est stylé correctement, mais le menu réel est en défaut sur le style de thème Windows et je ne vois aucun moyen sur l'écrasement. La partie la plus importante est d'obtenir l'ISmousever des sous-menus de maintenir le même aspect et de la même sensation que la structure principale du menu.


0 commentaires

3 Réponses :


1
votes

Comment appliquez-vous vos styles?

Typiquement, si vous définissez comme style dans un élément d'élément "élevé" ou "externe", et donnez-le sans clé, il s'appliquera à tous les éléments du type cible ci-dessous.

Faites-vous cela et voyez-vous un comportement inattendu ou essayez-vous de définir / appliquer des styles en ligne à chaque niveau?

Edit 1

En regardant votre XAML, je pense que le problème est que vous êtes coiffant contextmenu , mais des menus ci-dessous sont de type menu . La première chose que j'essaierais est de simplement changer l'attribut cibletype pour le style sur menu . Voir si cela est appliqué à tous les niveaux. Si non, je le changerais et ajouterais un autre style ciblage menu et voyez si que est appliqué au sous-menu.

Edit 2

D'accord, je pense avoir votre réponse. Le sous-menu est en fait un menuitem , qui est évident lors de la recherche du XAML au lieu du résultat. Le modèle et le style que vous définissez sur le contextMenu doivent également être définis sur n'importe quel Menuitem qui est un sous-menu. J'ai essayé et j'ai créé un style qui cible menuitem avec un modèle de contrôle et déclencheur pour ismouseover et il semblait faire ce que vous essayez.


2 commentaires

Jay, cela n'a rien réparer, le sous-menu n'a pas pris le style. C'est un problème très étrange.


Jay, pas vraiment sûr de ce que vous avez fait pour faire votre travail, mais quand j'ai essayé que cela n'a rien fait. Cependant, votre message m'a aidé à trouver la bonne réponse enfin! Je posterai brièvement le code dans une nouvelle réponse, le nettoyant simplement.



22
votes

Comme promis, voici le code. Merci pour votre aide Jay, menez-moi dans la bonne direction pour enfin trouver une réponse sur MSDN http://msdn.microsoft.com/en-us/library/ms752296.aspx Menuitem et contextMenu Contrôlez le style du menu de base et les deux autres sont pour les éléments de sous-menus. La voie de Jay peut avoir travaillé, mais je ne pouvais pas l'obtenir malheureusement. Cela fonctionne parfaitement et permet probablement de contrôler beaucoup plus de contrôle sur le style du sous-menus. xxx


2 commentaires

Merci de l'avoir posté; N'oubliez pas de le marquer comme la réponse.


@Jay, j'ai encore 53 minutes jusqu'à ce que Stackoverflow me permettent de marquer ma propre réponse :-p



0
votes

Pour ne pas dupliquer les modèles, vous ferez mieux de créer une avec Part_Popup et une flèche pour le sous-menu, mais masquez l'erreur jusqu'à ce que vous soyez déclenché avec un rôle sous-menu.


0 commentaires