2009-10-04 16 views
5

Ich habe in ein Problem versucht, ein Menu zu implementieren und kann nicht herausfinden, was vor sich geht. Ich versuche, ein Single-Layer-Menü mit dem Menu Steuerelement zu machen. Hier ist mein Menü Code:WPF Menuitem Border

<Menu DockPanel.Dock="Top" Height="22" Name="menu1" VerticalAlignment="Top" Background="#FF325170"> 
    <MenuItem Header="Featured" Style="{StaticResource menuItemStyle}" /> 
    <MenuItem Header="Search" Style="{StaticResource menuItemStyle}" /> 
</Menu> 

Und mein Stil für meine MenuItem s ist wie folgt:

<Style x:Key="menuItemStyle" TargetType="{x:Type MenuItem}"> 
    <Style.Triggers> 
    <Trigger Property="MenuItem.IsMouseOver" Value="true"> 
     <Setter Property = "Foreground" Value="Red"/> 
    </Trigger> 
    </Style.Triggers> 
</Style> 

Wenn ich die Menüpunkte Mouseover, es ist ein Border, das angezeigt wird, und ich kann nicht finde heraus, wie ich diese Grenze entfernen kann. Irgendwelche Vorschläge?

Antwort

5

Für viele der integrierten WPF-Steuerungsstile müssen Sie das ControlTemplate überschreiben.

Here is the MSDN page enthält das Menu ControlTemplate mit Anweisungen zur Verwendung - im Grunde werden lokale Kopien aller Stile für das Menu-Steuerelement eingefügt, die dann das standardmäßige Kontroll-Look-and-Feel überschreiben.

Um Ihr Problem zu lösen, sollten Sie nur diesen Stil einfügen in der Lage:

<Style x:Key="{x:Type Menu}" TargetType="{x:Type Menu}"> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Menu}"> 
     <!--Here is where you change the border thickness to zero on the menu--> 
     <Border BorderThickness="0"> 
      <StackPanel ClipToBounds="True" Orientation="Horizontal" 
         IsItemsHost="True"/> 
     </Border> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
+0

Ok, der Sinn macht. Vielen Dank! – Chrisc

Verwandte Themen