样式化上下文菜单项的问题

时间:2015-02-20 22:33:29

标签: c# wpf xaml user-interface contextmenu

我有代码(下面)应该生成一个样式化的上下文菜单。不幸的是,菜单项还显示了一个白色"不应该在那里的一点(见下文)。我试过把它设计出来,但它没有用。任何帮助将不胜感激

Context Menu

    <Style TargetType="ContextMenu">
        <Setter Property="Background" Value="{StaticResource backgroundDark}" />
        <Setter Property="BorderBrush" Value="{StaticResource highlight}" />
        <Style.Resources>
            <Style TargetType="MenuItem">
                <Setter Property="Foreground" Value="Black" />
                <Setter Property="Background" Value="Transparent" />
                <Style.Triggers>
                    <Trigger Property="IsHighlighted" Value="True">
                        <Setter Property="Foreground" Value="{StaticResource highlightLight}" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Style.Resources>
    </Style>

1 个答案:

答案 0 :(得分:1)

你想要覆盖

StackPanel Margin的MenuItems

然后使用相同的值覆盖ItemsPanel

enter image description here

所以基本上除了你的风格之外你还可以添加2个简单的样式。

我添加了一个示例:

<Grid>
    <Grid.Resources>
        <ItemsPanelTemplate x:Key="GlobalMenuItemPanelTemplate">
            <StackPanel Margin="-25,0,0,0" Background="White"/>
        </ItemsPanelTemplate>
        <Style TargetType="{x:Type ContextMenu}">
            <Setter Property="ItemsPanel" Value="{StaticResource GlobalMenuItemPanelTemplate}"/>
        </Style>
    </Grid.Resources>
    <Label Background="Bisque" Content="Right Click it" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Label.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Menu item 1" />
                <MenuItem Header="Menu item 2" />
                <Separator />
                <MenuItem Header="Menu item 3" />
            </ContextMenu>
        </Label.ContextMenu>
    </Label>
</Grid>