2009-10-04 136 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