双击TreeView会导致MenuItem单击新窗口

时间:2017-08-01 19:54:14

标签: c# wpf treeview menuitem double-click

我有一个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();
    }
}

1 个答案:

答案 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