将DragDropTarget与传统Grid一起使用

时间:2010-10-02 19:42:14

标签: silverlight grid

Silverlight 4现在提供控制来处理拖放操作。所有目标控件似乎都继承自DragDropTarget,如此

public class MyControlDragDropTarget : DragDropTarget<TItemsControlType,TItemsContainerType>

。 。

许多控件都有预定义的DragDropTargets,包括DataGrid,ListBox,Panels

这一切都很好,但我想从网格而不是拖放数据网格,并且没有为普通网格预先定义的网格。

我实际上想从网格中拖动一个给定的行,但是如果没有网格的容器类型,我就无法弄清楚如何为网格定义DragDropTarget控件。

我只能想到的不是使用网格 - 我使用了一个列表框(其中有一个DragDropTarget),然后在每行中放置一个StackPanel或Grid(它有一行'n'列)

任何人都有任何想法

事先提前

1 个答案:

答案 0 :(得分:1)

“普通网格”只是另一种形式的面板,DragDropTarget不需要专门的Grid,现有的PanelDragDropTarget足以满足“普通网格”。

重要的是,Grid不支持“包含包含UI元素的单元格的行”的概念。 Grid的行和列完全相同,仅为布局目的而定义。网格的UIElement子项完全相互独立地布局,没有一组属于列或行的值的概念可以作为一个组移动或操作(比如拾取一行并拖动它) )。

听起来你已经为自己找到了答案,请改用ListBox

顺便说一下,Silverlight 4不提供DragDropTarget,而是Silverlight工具包。这是一个重要的区别,因为分配给DragDropTarget的当前质量带是“实验性”。如果您想在自己的某个生产版本中使用此类代码,则需要仔细考虑这一点。