双击树视图会导致菜单项单击新窗口



>我有一个TreeView,当用户双击TreeViewItem时会打开一个新窗口。这个新窗口放置在前一个窗口(具有树视图的窗口(的前面和中心(WindowStartupLocation="CenterOwner"(。有时,当这个新窗口打开时,鼠标直接位于新窗口的 MenuItem 顶部,这会导致触发 MenuItem Click 事件,这在我的程序中是不可取的。我尝试在 TreeView MouseDoubleClick 处理程序中将 e.Handle 设置为 true,但它没有改变此行为。

这是我的树视图:

<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();
}
}

如果具有 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如果上述解决方案不令人满意

相关内容

最新更新