Silverlight 4现在提供控制来处理拖放操作。所有目标控件似乎都继承自DragDropTarget,如此
public class MyControlDragDropTarget : DragDropTarget<TItemsControlType,TItemsContainerType>
。 。
许多控件都有预定义的DragDropTargets,包括DataGrid,ListBox,Panels
这一切都很好,但我想从网格而不是拖放数据网格,并且没有为普通网格预先定义的网格。
我实际上想从网格中拖动一个给定的行,但是如果没有网格的容器类型,我就无法弄清楚如何为网格定义DragDropTarget控件。
我只能想到的不是使用网格 - 我使用了一个列表框(其中有一个DragDropTarget),然后在每行中放置一个StackPanel或Grid(它有一行'n'列)
任何人都有任何想法
事先提前答案 0 :(得分:1)
“普通网格”只是另一种形式的面板,DragDropTarget
不需要专门的Grid
,现有的PanelDragDropTarget
足以满足“普通网格”。
重要的是,Grid
不支持“包含包含UI元素的单元格的行”的概念。 Grid的行和列完全相同,仅为布局目的而定义。网格的UIElement子项完全相互独立地布局,没有一组属于列或行的值的概念可以作为一个组移动或操作(比如拾取一行并拖动它) )。
听起来你已经为自己找到了答案,请改用ListBox
。
顺便说一下,Silverlight 4不提供DragDropTarget
,而是Silverlight工具包。这是一个重要的区别,因为分配给DragDropTarget
的当前质量带是“实验性”。如果您想在自己的某个生产版本中使用此类代码,则需要仔细考虑这一点。