/ / WPF Menuitem Border - wpf, menu, wpf-controles, estilos, menuitem

WPF Menuitem Border - wpf, menú, wpf-controls, styles, menuitem

Me he encontrado con un problema tratando de implementar un Menu y no puedo averiguar qué está sucediendo. Estoy tratando de hacer un menú de una sola capa usando el Menu controlar. Aquí está mi código de menú:

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

Y mi estilo para mi MenuItems es como sigue:

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

Cuando muevo el mouse sobre los elementos del menú, hay un Border eso aparece, y no puedo averiguar por mi vida cómo eliminar este borde. ¿Alguna sugerencia?

Respuestas

5 para la respuesta № 1

Para muchos de los estilos de control de WPF incorporados, debe anular el ControlTemplate.

Aquí está la página de MSDN que proporciona el Menu ControlTemplate, coninstrucciones sobre cómo usarlo: básicamente está insertando copias locales de todos los estilos para el control del Menú, que luego anulan la apariencia y el control predeterminados.

Para resolver su problema, debería poder insertar este estilo:

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