Найдите TreeViewItem для удаления данных - PullRequest
2 голосов
/ 23 марта 2009

Я хочу перетащить данные из 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;
    }
}

A Participant перетаскивается из ListView в TreeView. Теперь мне нужно найти Group. Любые идеи, где можно получить право Group из TreeView?

1 Ответ

2 голосов
/ 23 марта 2009

Я бы просто установил Drop = "tvDrop" и DragOver = "tvDragOver" на StackPanel в ItemTemplate элемента HierarchicalDataTemplate.

Сюда 1) Вы не рискуете получить событие, когда что-то выпадает из группы 2) Вы можете безопасно преобразовать Отправителя в FrameworkElement, получить DataContext и привести его к своему классу.

Вы также можете установить другой обработчик для самого дерева, если вам нужно поддерживать перетаскивание из групп.

...