C# 在拖动过程中获取treeviewitem&;两个TreeView之间的删除操作

C# 在拖动过程中获取treeviewitem&;两个TreeView之间的删除操作,c#,.net,wpf,treeview,C#,.net,Wpf,Treeview,我正在两个TreeView之间执行拖放操作。 在目标treeview(Drop treeview)中,使用系统中的驱动器和文件填充此treeview。 如何在目标树视图中获取要将拖动的项拖放到的树视图项? 我在目标树视图的删除事件中使用以下代码 private void TargetTreeview_Drop(object sender, DragEventArgs e) { Node item = e.Data.GetData(typeof(Node)) as

我正在两个TreeView之间执行拖放操作。 在目标treeview(Drop treeview)中,使用系统中的驱动器和文件填充此treeview。 如何在目标树视图中获取要将拖动的项拖放到的树视图项? 我在目标树视图的删除事件中使用以下代码

    private void TargetTreeview_Drop(object sender, DragEventArgs e)
    {
        Node item = e.Data.GetData(typeof(Node)) as Node;
        e.Effects = DragDropEffects.Copy;
        Point Start = e.GetPosition(TargetTreeview_Drop);
        HitTestResult result = VisualTreeHelper.HitTest(TargetTreeview_Drop, Start);
        if (result != null)
        {
            if (result.VisualHit is FrameworkElement)
            {
                FrameworkElement Target = result.VisualHit as FrameworkElement;
                object data = Target.DataContext;
            }
        }


    }
在上面的代码中,我无法将对象“data”转换为treeviewitem。 如果我将“data”转换为treeviewitem,则表示它为“null”


任何人都可以帮助我获取我要将拖动的项拖放到的目标treeview项。

我将分别执行此操作,首先在第一个treeview中,我将有一个Click或MouseCliCk事件处理程序,并将单击的项保存在全局变量中

TreeNode tn = null;
treeView1.Click += (s,e)=>{
    tn=e.Node;
};
在第二个树状视图中,我会在drop事件中看到类似的内容(不知道drop事件的正确语法,但你会明白的)


希望很清楚

尝试将发送者对象强制转换为树视图,然后使用树视图的SelectedItem。如果它是一个TreeViewItem,那么将其作为一个TreeViewItem进行铸造

    var tree = sender as TreeView;

    // ... Determine type of SelectedItem.
    if (tree.SelectedItem is TreeViewItem)
    {
        // ... Handle a TreeViewItem.
        var item = tree.SelectedItem as TreeViewItem;
        this.Title = "Selected header: " + item.Header.ToString();
    }
    else if (tree.SelectedItem is string)
    {
        // ... Handle a string.
        this.Title = "Selected: " + tree.SelectedItem.ToString();
    }

Hai Vajura在wpf中没有TreeNode类。TreeNode类存在于Winforms中。我在wpf TreeViewItem中询问。
    var tree = sender as TreeView;

    // ... Determine type of SelectedItem.
    if (tree.SelectedItem is TreeViewItem)
    {
        // ... Handle a TreeViewItem.
        var item = tree.SelectedItem as TreeViewItem;
        this.Title = "Selected header: " + item.Header.ToString();
    }
    else if (tree.SelectedItem is string)
    {
        // ... Handle a string.
        this.Title = "Selected: " + tree.SelectedItem.ToString();
    }