我有上下文菜单的上下文菜单,当我按“应用程序密钥”它没有显示上下文菜单时,它必须像Windows一样工作。
<ListBox.ContextMenu>
<ContextMenu Name="ZoneIformationList" StaysOpen="true" Background="WhiteSmoke">
<ContextMenu.BitmapEffect>
<BitmapEffectGroup/>
</ContextMenu.BitmapEffect>
<MenuItem Header="Edit" Name="EditNutritionContextMenu" />
<MenuItem Header="Remove" Name="RemoveNutritionContextMenu" />
</ContextMenu>
</ListBox.ContextMenu>
答案 0 :(得分:1)
您有多种选择可以实现目标。您可以创建一个Command
来打开ContextMenu
,然后使用该命令添加KeyBinding
,并KeyGesture
添加ALT + CTRL
InputBindings
KeyBinding
你的主窗口。
您可以在KeyBinding Class页面上找到有关KeyGesture
课程的详情,并在MSDN的KeyGesture Class页面找到PreviewMouseDown
课程。
另一个选项是为ALT
(或类似)事件添加处理程序,并监视是否按下CTRL
和ContextMenu
键,然后以编程方式启动{{1控制它们是否为:
public void ListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt &&
(e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
// Open ContextMenu
}
}
现在剩下的就是从代码中打开ContextMenu
:
if (element.ContextMenu != null )
{
element.ContextMenu.PlacementTarget = element;
element.ContextMenu.IsOpen = true;
}
如果ContextMenu
放置不正确,您可以使用ContextMenu.HorizontalOffset
和ContextMenu.HorizontalOffset
属性设置展示位置。