我想从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
吗?
答案 0 :(得分:2)
我只需在HierarchicalDataTemplate的ItemTemplate中的StackPanel上设置Drop =“tvDrop”和DragOver =“tvDragOver”。
这样 1)当团队中的某些内容被删除时,您没有任何获得活动的风险 2)您可以安全地将Sender强制转换为FrameworkElement并获取DataContext并将其强制转换为您的类。
如果您需要支持拖出组,您还可以在树视图上设置不同的处理程序。