Ich habe einen ContextMenu-Stil und einen MenuItem-Stil, die beide im oberen Menü korrekt funktionieren. Das Problem ist, wenn ich einem Menüpunkt ein Untermenü hinzufüge, dann wird das Untermenü nicht richtig gestylt. Es sieht so aus, als ob Sie das Menüelement nur an diesem Punkt und nicht im eigentlichen Untermenü formatieren können, so dass Sie den IsMouseOver-Stil nicht ersetzen können (es wird nur das in Windows aktivierte Thema verwendet).
Ich habe gesucht und gesucht. Das nächste, was ich finden kann, ist dieser Forenbeitrag auf MSDN Ссылка , aber es beantwortet die Frage auch nicht richtig, da sein Beispiel das gleiche Problem hat, in das ich hineinrenne. Jede Hilfe wäre willkommen! Vielen Dank im Voraus.
Bearbeiten: Jay, das mache ich. Hier ist ein Code in UserControl.Resources als oberstes Objekt.
%Vor%und dann so etwas für das Menü
%Vor%Alles auf der NewCommand-Ebene ist korrekt formatiert, in NewCommand wird DeleteCommand angezeigt, das MenuItem selbst ist richtig formatiert, aber das eigentliche Menü ist standardmäßig auf das Windows-Design eingestellt, und ich sehe keine Möglichkeit, das bisher zu überschreiben. Der wichtigste Teil besteht darin, dass das IsMouseOver-Untermenü das gleiche Aussehen und Verhalten wie die Hauptmenüstruktur erhält.
Wie versprochen, hier ist der Code. Danke für deine Hilfe Jay, führe mich in die richtige Richtung, um endlich eine Antwort auf MSDN Ссылка zu finden MenuItem und ContextMenu steuern das Styling für das Basismenü und die anderen beiden sind für die Untermenüpunkte. Jay's Art hat vielleicht funktioniert, aber ich konnte es leider nicht erreichen. Dies funktioniert jedoch perfekt und ermöglicht wahrscheinlich viel mehr Kontrolle über das Untermenüs Styling.
%Vor%Wie wenden Sie Ihre Stile an?
Wenn Sie in den Ressourcen eines Elements "high" oder "outer" als Stil definieren und ihm keinen Schlüssel zuweisen, gilt dies normalerweise für alle Elemente des folgenden Zieltyps.
Machen Sie dies und sehen Sie unerwartetes Verhalten oder versuchen Sie, Stile auf jeder Ebene inline zu definieren / anzuwenden?
Wenn Sie sich Ihr XAML ansehen, ist das Problem, dass Sie ContextMenu
formatieren, aber darunter liegende Menüs vom Typ Menu
. Das erste, was ich versuchen würde, ist das Attribut TargetType
für Style
in Menu
zu ändern. Sehen Sie, ob das auf allen Ebenen angewendet wird. Wenn nicht, würde ich es zurück ändern und ein weiteres Style
targeting Menu
hinzufügen und sehen, ob das auf das Untermenü angewendet wird.
Okay, ich denke, ich habe deine Antwort. Das Untermenü ist tatsächlich ein MenuItem
, was offensichtlich ist, wenn man sich das XAML anstelle des Ergebnisses ansieht. Die Vorlage und das Design, die Sie für ContextMenu
festlegen, müssen auch auf einem beliebigen MenuItem
festgelegt werden, bei dem es sich um ein Untermenü handelt. Ich habe es ausprobiert und einen Style erstellt, der MenuItem
auf eine Kontrollschablone und Trigger für IsMouseOver
abzielt, und es scheint zu tun, was du versuchst.
Tags und Links wpf menuitem contextmenu styling