1. ホーム
  2. wpf

[解決済み] 右クリックでContextMenuを表示する前にTreeView Nodeを選択する

2022-12-28 05:47:18

質問

WPF TreeViewのノードを右クリックで選択し、ContextMenuが表示される直前で選択したいのですが。

WinFormsの場合、次のようなコードを使用することができます。 コンテキストメニューの下でクリックされたノードを見つける WPFの代替は何ですか?

どのように解決するのですか?

ツリーの入力方法によります。 の送信者と e.Source の値は異なる場合があります。 .

考えられる解決策の1つは、e.OriginalSourceを使用し、VisualTreeHelperを使用してTreeViewItemを見つけることです。

private void OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject);

    if (treeViewItem != null)
    {
        treeViewItem.Focus();
        e.Handled = true;
    }
}

static TreeViewItem VisualUpwardSearch(DependencyObject source)
{
    while (source != null && !(source is TreeViewItem))
        source = VisualTreeHelper.GetParent(source);

    return source as TreeViewItem;
}