如何解决重写MenuItem ControlTemplate防止单击项目时关闭ContextMenu
我正在使用WPF并像这样覆盖ControlTemplate
的{{1}}:
MenuItem
我的上下文菜单打开得很好,当我单击该项目时,它激活按钮的命令也很好,但是上下文菜单没有关闭。关于单击项目后关闭上下文菜单需要做什么的任何建议?
解决方法
从模板中删除Button
,并处理Command
本身的MenuItem
:
<Button Content="Click Me" Margin="5">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding MenuItemCommand}">
<MenuItem.Template>
<ControlTemplate>
<TextBlock Text="Item 1" Margin="5"/>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>
,
要隐藏MenuItem
的默认背景,可以这样设置样式:
<Button Content="Click Me" Margin="5">
<Button.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Name="bdr" Margin="-5" Padding="10" Background="White">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=Header}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="bdr" Value="AliceBlue"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.Resources>
<MenuItem Header="Item 1" Command="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu},Path=DataContext.MenuItemCommand}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。