2013-04-26 96 views
1

有谁知道如何去除鼠标悬停在菜单中的菜单项时出现的令人讨厌和恼人的边框。WPF菜单项边界

我已经搞乱了风格并搜索了一下,但是我无法用头围住它。

带菜单中按钮的示例;

enter image description here

+0

发布一些代码,所以我们可以看到你尝试过什么 – 2013-04-26 13:35:07

回答

1

您可以在this MSDN articleMenuItem类的默认样式和控件模板。

这表明很讨厌你的边境控制,是一个名为"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> 
+0

太棒了!非常感谢! – perkrlsn 2013-04-26 14:20:11