【问题标题】:Find TreeViewItem to drop data查找 TreeViewItem 以删除数据
【发布时间】:2009-03-23 01:49:43
【问题描述】:

我想从 ListView 中拖动数据并将其放到 TreeView 中(拖动工作正常)。我使用 DataBinding 和 ItemTemplate 来填充 TreeView。

<TreeView ItemsSource="{Binding Groups}" Name="tvGroups" AllowDrop="True"
          Drop="tvDrop" DragOver="tvDragOver">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Participants}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" />
                <Button Tag="{Binding .}" Click="Button_Click_2">
                    <Image Source="Resources/cross.png" />
                </Button>
            </StackPanel>
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" >
                        <TextBlock Text="{Binding Alias}" />
                        <Button Tag="{Binding .}" Name="btnDeleteParticipants" Click="btnParticipants_Click" >
                            <Image Source="Resources/cross.png" />
                        </Button>
                    </StackPanel>
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

private void tvDrop(object sender, DragEventArgs e)
{
    if (e.Effects == DragDropEffects.Copy &&
        e.Data.GetDataPresent(typeof(Participant)))
    {
        Participant data = e.Data.GetData(typeof(Participant)) as Participant;
    }
}

Participant 从 ListView 拖到 TreeView。现在我需要找到Group。有什么想法可以从 TreeView 中获得正确的 Group 吗?

【问题讨论】:

    标签: c# xaml treeview drag-and-drop


    【解决方案1】:

    我只需在 HierarchicalDataTemplate 的 ItemTemplate 中的 StackPanel 上设置 Drop="tvDrop" 和 DragOver="tvDragOver"。

    这边 1)当某物从组中退出时,您没有任何风险获得事件 2) 您可以安全地将 Sender 转换为 FrameworkElement 并获取 DataContext 并将其转换为您的类。

    如果您需要支持拖出组,您还可以在树视图本身上设置不同的处理程序。

    【讨论】:

    • 我将组绑定到 StackPanel.Tag 并且效果很好。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多