2009-10-04 172 views
5

我遇到了試圖執行Menu的問題,無法弄清楚發生了什麼。我正在嘗試使用Menu控件製作單層菜單。這裏是我的菜單代碼:WPF Menuitem邊框

<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> 

而且我對我的MenuItem風格如下:

<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> 

當我將鼠標放置菜單項,有可能會出現一個Border,我不能想出我的生活如何去除這個邊界。有什麼建議麼?

回答

5

對於很多內置的WPF控件樣式,您需要覆蓋ControlTemplate。

Here is the MSDN page提供了Menu ControlTemplate以及如何使用它的說明 - 基本上,您將爲Menu控件插入所有樣式的本地副本,然後覆蓋默認控件外觀。

爲了解決你的問題,你應該能夠只需插入這種風格:

<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

好吧,這是有道理的。謝謝! – Chrisc