2010-11-03 10 views
1

Fondamentalement, dans l'arborescence, j'ai une liste d'éléments, si l'élément est de type "Groupe", puis je peux ajouter/glisser des éléments drop dedans.Désactivation de Drop sur certains éléments dans TreeViewDragDropTarget de Silverlight Toolkit

Comment puis-je obtenir cela dans le code? J'ai essayé les événements DragEnter, DragOver et définissant la propriété allowdrop sur false si l'élément cible n'est pas un objet de groupe mais en vain. Des conseils s'il vous plaît?

Vive

Répondre

2

Vous souhaitez définir les effets sur Aucun (ou désactiver Copier/Link/Déplacer plus précisément). TreeViewDragDropTarget lui-même est un bon exemple de ce type de programmation, car il contient une logique pour désactiver de la même manière si vous essayez de faire glisser un élément sous lui-même.

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

L'extrait pertinent:

 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; 
      } 
     }