我有带有上下文菜单的列表框,当我按“应用键”它没有显示上下文菜单时,它必须像窗口一样工作。
<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>发布于 2013-08-19 14:34:29
关于如何实现你的目标,你有几个选择。您可以创建一个打开Command的ContextMenu,然后向主窗口的InputBindings中添加一个带有命令的KeyBinding和一个ALT + CTRL的KeyGesture。
您可以从KeyBinding页面了解更多关于KeyBinding类类的信息,从KeyGesture类页面了解更多关于KeyGesture类的信息。
另一个选项是为PreviewMouseDown (或类似的)事件添加一个处理程序,并监视是否按下了ALT和CTRL键,然后以编程方式启动ContextMenu控件,如果它们是:
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属性设置位置。
https://stackoverflow.com/questions/18309888
复制相似问题