2

我在 SilverLight 中使用 TreeView 进行拖放时遇到问题。我希望能够重新排序 TreeView 中的项目。例如,重新设置一个项目。我正在使用具有层次关系(ID、ParentID)的 EntityFramework。这是我的 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。Entity 的 Children 属性是一个 EntityCollection。我不确定我可以在 EntityObject 中搞砸什么。

有人有想法么??

更新:如果我将一个子节点拖到它的上层或下层树中的任何节点上,什么都不会发生。如果我在根节点上方或下方拖动子节点,树视图中会出现一条线。如果我把它放在那里,我会得到一个空引用异常。我无法确定它。我知道这个问题有很多问题,但我认为我们已经接近了。任何帮助或见解表示赞赏。

更新 2:我将添加一些屏幕截图来显示正在发生的事情。

这是一个示例树视图。 示例树视图

TreeViewItem 拖动 这是我拖动项目时的样子。我正在尝试将银河系拖到没有父节点的根节点。注意顶部的线。我认为这是放置位置。如果我把它放在那里,我会得到例外。假设我将太阳系拖为宇宙的直接子代。什么都没发生。也没有出现线。

4

0 回答 0