问题描述
我正在使用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>