WPF MenuItem边框

时间:2013-04-26 13:34:00

标签: wpf

有人知道如何删除当您将菜单项鼠标悬停在菜单中时出现的那种糟糕且烦人的边框。

我已经弄乱了各种风格并用Google搜索,但我无法绕过它。

菜单中的按钮示例;

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在this MSDN article中找到MenuItem课程的默认样式和控件模板。

显示令您烦恼的边框的控件是名为"Border"的控件,其背景在属性IsHighlighted的触发器中更改。 此边框在ControlTemplate中使用键x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}"定义。 删除触发器(为了完整边框),MenuItem可以按照您的意愿显示。

以下是原始控件模板:

<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="MenuItem">
    <Border Name="Border">
        <Grid>
            <ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" />
        </Grid>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsHighlighted" Value="true">
            <Setter TargetName="Border" Property="Background" Value="{StaticResource NormalBrush}"/>
            <Setter TargetName="Border" Property="BorderBrush" Value="Transparent"/>
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
    </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

这是经过调整的模板:

<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="MenuItem">
    <Grid>
        <ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" />
    </Grid>
    <ControlTemplate.Triggers>
        <Trigger Property="IsEnabled" Value="False">
        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
    </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>