我有一个TreeView,当用户双击TreeViewItem时会打开一个新窗口。这个新窗口位于前一个窗口(带有TreeView的窗口)的前面和中心(WindowStartupLocation="CenterOwner"
)。有时当这个新窗口打开时,鼠标直接位于新窗口的MenuItem之上,这会导致触发MenuItem Click事件,这在我的程序中是不可取的。我尝试在TreeView MouseDoubleClick处理程序中将e.Handled设置为true,并且它没有改变此行为。
这是我的TreeView:
<TreeView x:Name="treeView" MouseDoubleClick="treeView_MouseDoubleClick" ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding MessageHeaders}" ItemTemplate="{StaticResource childrenDataTemplate}">
<TextBlock Text="{Binding Path=ModuleName}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
和treeView_MouseDoubleClick:
private void treeView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
e.Handled = true;
APIEditorWindow editor = new APIEditorWindow();
editor.Owner = this;
editor.Show();
}
}
答案 0 :(得分:0)
如果具有Click事件的菜单项只需要单击一下,您可以检查它是否是通过双击触发的
private void MenuItemClick(object sender, MouseButtonEventArgs e)
{
if(e.ClickCount == 1)
{
// your code
}
// if it was activated from a double click, code will be ignored
}
如果上述解决方案不满意,其他建议可能是尝试Preview
个事件并使用e.Handled = true