Remove border from MenuItem

0

I am working with WPF and implemented a Menu but I could not remove the border that appears in the Items.

Here my code:

<ControlTemplate x:Key="menuTemplate" TargetType="{x:Type MenuItem}">
        <Border x:Name="templateRoot" BorderThickness="0" Background="{TemplateBinding Background}" SnapsToDevicePixels="False" Padding="0" >
            <Grid Margin="-1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MinWidth="22" SharedSizeGroup="MenuItemIconColumnGroup" Width="Auto"/>
                    <ColumnDefinition Width="13"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="30"/>
                    <ColumnDefinition SharedSizeGroup="MenuItemIGTColumnGroup" Width="Auto"/>
                    <ColumnDefinition Width="20"/>
                </Grid.ColumnDefinitions>
                <ContentPresenter x:Name="Icon" Content="{TemplateBinding Icon}" ContentSource="Icon" HorizontalAlignment="Center" Height="16" Margin="3" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Width="16"/>
                <ContentPresenter x:Name="menuHeaderContainer" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="2" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
            </Grid>
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="Icon" Value="{x:Null}">
                <Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
            </Trigger>
            <Trigger Property="IsHighlighted" Value="True">
                <Setter Property="BorderBrush" TargetName="templateRoot" Value="Transparent"/>
                <Setter Property="Background" TargetName="templateRoot" Value="#298AE1"/>
                <Setter Property="TextBlock.Foreground" TargetName="menuHeaderContainer" Value="White" />
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

And the one in the Menu:                                                                                                                                                                                                                                                                                                                       

<DockPanel Grid.Column="5" >
        <Menu Background="#354052">
            <MenuItem Header="{Binding UserName}" FontFamily="SEGOE UI" FontWeight="Bold" FontSize="20" Foreground="White">
                <MenuItem Header="{x:Static resx:Resources.SessionChange}" FontSize="12" FontWeight="Medium" Background="#176DBC" Command="{Binding ChangeCommand}" Template="{DynamicResource menuTemplate}" BorderThickness="0" BorderBrush="#176DBC">
                    <MenuItem.Icon>
                        <Image Source="/Images/Icons/ChangeUser.png" Width="30"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="{x:Static resx:Resources.SessionOff}" Background="#176DBC" FontSize="12" FontWeight="Medium" Command="{Binding ExitCommand}" Template="{DynamicResource menuTemplate}">
                    <MenuItem.Icon>
                        <Image Source="/Images/Icons/Exit.png"/>
                    </MenuItem.Icon>
                </MenuItem>
            </MenuItem>
        </Menu>
    </DockPanel>

I appreciate your help.

Annex border image

    
asked by Pistche Lawliet 19.12.2018 в 18:42
source

1 answer

0

Try creating the menu template and assign it a% co_of% of 0 to eliminate the border of BorderThickness :

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

        <Border BorderThickness="0">
          <StackPanel ClipToBounds="True" Orientation="Horizontal"
                      IsItemsHost="True"/>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
    
answered by 12.01.2019 / 22:48
source