2017-08-01 6 views
2

ユーザーが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(); 
    } 
} 

答えて

0

Clickイベントを持っているメニュー項目は、単一のクリックが必要な場合は、それがAからトリガされた場合は、あなたがチェックできますダブルクリック

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を使用してください。

+0

MenuItem Clickイベントには、クリックカウントを含まない 'MouseButtonEventArgs'ではなく、' RoutedEventArgs'が入力として含まれています。 'Preview'イベントを使ってみましたが、うまくいきませんでした。 – drmr9grl

関連する問題