tutorial - WPF Menuitem Border



wpf toolbar (1)

J'ai rencontré un problème en essayant d'implémenter un Menu et je n'arrive pas à comprendre ce qui se passe. J'essaye de faire un menu de monocouche en utilisant le contrôle de Menu . Voici mon code de 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>

Et mon style pour mon MenuItem s est comme suit:

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

Quand je souris sur les éléments du menu, il y a une Border qui apparaît, et je ne peux pas comprendre pour la vie de moi comment enlever cette bordure. Aucune suggestion?


Pour la plupart des styles de contrôle WPF intégrés, vous devez remplacer le ControlTemplate.

Voici la page MSDN qui fournit le menu ControlTemplate, avec des instructions sur la façon de l'utiliser - en gros, vous insérez des copies locales de tous les styles pour le contrôle Menu, qui remplacent alors l'aspect et la convivialité du contrôle par défaut.

Pour résoudre votre problème, vous devriez pouvoir insérer ce style:

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