WPF Untermenü styling

Habe ich ein ContextMenu-Stil und ein MenuItem-Stil, beide sind ordnungsgemäß in der oberen Menüleiste. Das problem ist, wenn ich ein Untermenü zu einem Menüpunkt, dann wird das Untermenü nicht richtig gestylt. Es sieht aus wie Sie können nur den Stil der menuitem-an diesem Punkt, und nicht die eigentliche sub-Menü, so dass Sie nicht ersetzen können die IsMouseOver-styling (nur es standardmäßig auf was auch immer Thema ist aktiviert, unter windows).

Ich habe gesucht und gesucht, die am nächsten Sache, die ich finden kann, ist dieses forum auf MSDN http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/69269d23-f97c-42e3-a9dd-0e7c0ba49bdd?prof=required aber es hat nicht wirklich beantworten Sie die Frage richtig entweder, wie sein Beispiel hat das gleiche problem, ich bin mit in. Jede mögliche Hilfe würde geschätzt! Vielen Dank im Voraus.

Bearbeiten:
Jay, das ist, was ich Tue. Hier finden Sie den code im UserControl.Ressourcen wie die Spitze von meinem Objekt.

    <Style TargetType="{x:Type MenuItem}">
        <Setter Property="Background" Value="#0f3c5a"></Setter>
        <Setter Property="Foreground" Value="White"></Setter>
        <Style.Triggers>
            <Trigger Property="IsHighlighted" Value="True">
                <Setter Property="Background" Value="Black"></Setter>
            </Trigger>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Foreground" Value="LightGray"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style TargetType="{x:Type ContextMenu}">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ContextMenu}">

                    <!--Here is where you change the border thickness to zero on the menu-->
                    <Border BorderThickness="0" x:Name="Border"  >
                     <StackPanel ClipToBounds="True" Orientation="Vertical"
                     IsItemsHost="True"/>
                     </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="#5082a4" />
                        </Trigger>
                    </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>

und dann sowas für das Menü

<ContextMenu Closed="ContextMenu_Closed"  >
    <MenuItem  Command="k:Window1.NewCommand" > 
       <MenuItem  Command="k:Window1.DeleteCommand"/> 
    </MenuItem>
    ...

Alles auf die NewCommand-layer gestaltet ist richtig, geht innerhalb NewCommand anzeigen DeleteCommand MenuItem selbst gestaltet ist richtig, aber das eigentliche Menü ist standardmäßig auf die Windows-Thema styling und ich sehe keine Möglichkeit mehr überschreiben, dass so weit. Der wichtigste Teil ist, um die IsMouseOver der Untermenü ' s zu halten die gleichen look and feel wie die Hauptmenü-Struktur.

InformationsquelleAutor user64718 | 2010-08-02
Schreibe einen Kommentar