我有一个包含多个控件的列表框。每个控件都包含一个自定义自动完成框,其中包含System.Windows.Controls.AutoCompleteBox。当我右键单击控件时,会出现一个自定义上下文菜单。但是右键单击文本框会出现TextBox的默认上下文菜单(包含“复制”,“剪切”和“粘贴”)。
我的目标是通过右键单击TextBox来显示我的自定义上下文菜单。
进一步的信息: 我的自定义上下文菜单是在ListBox的DataTemplate中定义的,但我可以在Ressources或其他地方定义它。
我试过了: - 当我取消自定义自动完成框或System.Windows.Controls.AutoCompleteBox的上下文菜单时,它根本没有效果
感谢您的帮助;)
答案 0 :(得分:1)
您可以将上下文菜单属性绑定到父元素的上下文菜单,也可以在resource.xaml中定义后绑定到上下文菜单
答案 1 :(得分:0)
尝试使用PreviewMouseDown而不是MouseDown来处理MouseDown事件。
在XAML中:
<ListBox Margin="3" PreviewMouseDown="MouseDownOnListBox">
在代码中:
private void MouseDownOnListBox(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Right)
{
//Display your context menu
}
}
如果您在列表中使用PreviewMouseDown,当您单击列表中的任意位置时,将首先触发此事件。