我在SilverLight中使用TreeView执行拖放操作时遇到问题。我希望能够在TreeView中重新排序项目。例如,重新显示一个项目。我正在使用具有层次关系的EntityFramework(ID,ParentID)。这是我的xaml。
<toolkit:TreeViewDragDropTarget AllowDrop="True" HorizontalAlignment="Left">
<sdk:TreeView Name="treeView1" Height="176"
HorizontalAlignment="Left" Width="Auto">
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate
ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=LocationName}"/>
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
</toolkit:TreeViewDragDropTarget>
我创建了一些事件处理程序,以查看拖放事件是否正常工作。 Silverlight还提供了阻力发生的视觉反馈。
我想知道的一件事是绑定到TreeView的Collection不是ObservableCollection。实体的Children属性是EntityCollection。我不确定我在EntityObject中可以搞得什么。
任何人有任何想法吗?
更新:如果我将子节点拖到其上层或下层树中的任何节点,则没有任何反应。如果我将子项拖到根节点上方或下方,则树视图中会出现一条线。如果我把它放在那里,我得到一个空引用异常。我无法把它钉死。我知道这个问题有很多,但我认为我们已经接近了。任何帮助或见解表示赞赏。
更新2:我将添加一些屏幕截图来显示正在发生的事情。
示例树视图
这是我拖动项目时的样子。我试图将银河系拖为没有父母的根节点。注意顶部的线。我认为这是下降位置。如果我放弃它,我得到例外。假设我将太阳系拖成宇宙的直接孩子。什么都没发生。也没有出现任何行。