2010-11-03 64 views
1

基本上在树形视图中,我有一个项目列表,如果项目是“Group”类型的项目,那么我可以添加/拖放项目到其中。在Silverlight Toolkit的TreeViewDragDropTarget中禁用删除某些项目

我怎样才能做到这一点的代码?我试过的dragenter,dragover事件如果目标项目不是一组对象,但无济于事AllowDrop属性设置为false。有什么建议吗?

干杯

回答

2

你要设置为无影响(或关闭复制/链接/更具体移动)。

编程这样做的一个很好的例子是内TreeViewDragDropTarget本身,因为它包含的逻辑同样禁止,如果你想在自己拖动项目。

http://silverlight.codeplex.com/SourceControl/changeset/view/56962#779753

相关片段:

 if (itemsControl == null || IsTreeViewItemDraggedInDescendent(args) || IsTreeViewItemDraggedDirectlyAboveOrBelowSelf(args)) 
     { 
      SW.DragDropEffects effects = args.AllowedEffects & (~(SW.DragDropEffects.Copy | SW.DragDropEffects.Link | SW.DragDropEffects.Move)); 
      args.Effects = effects; 
      if (args.Effects != args.AllowedEffects) 
      { 
       args.Handled = true; 
      } 
     }