ユーザーがTreeViewItemをダブルクリックしたときに新しいウィンドウを開くTreeViewがあります。この新しいウィンドウは、前のウィンドウの前と中央(WindowStartupLocation="CenterOwner"
)(ツリービューを持つウィンドウ)に配置されます。ときどきこの新しいウィンドウが開くと、マウスが新しいウィンドウのMenuItemの上に直接表示され、MenuItemのClickイベントが発生します。これはプログラムでは望ましくありません。 TreeView MouseDoubleClickハンドラでe.Handledをtrueに設定しようとしましたが、この動作は変更されませんでした。ここでTreeViewをダブルクリックするとMenuItemが発生する新しいウィンドウを開く
は私のツリービューです:
<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();
}
}
MenuItem Clickイベントには、クリックカウントを含まない 'MouseButtonEventArgs'ではなく、' RoutedEventArgs'が入力として含まれています。 'Preview'イベントを使ってみましたが、うまくいきませんでした。 – drmr9grl