6

我在尝试实现 a 时遇到了问题Menu,但无法弄清楚发生了什么。Menu我正在尝试使用控件制作单层菜单。这是我的菜单代码:

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

而我的MenuItems风格如下:

<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会出现一个,我一生都无法弄清楚如何删除此边框。有什么建议么?

4

1 回答 1

6

对于很多内置的 WPF 控件样式,您需要重写 ControlTemplate。

这是提供 Menu ControlTemplate 的 MSDN 页面,其中包含有关如何使用它的说明——基本上,您正在为 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>
于 2009-10-04T00:40:07.370 回答