在WinRT中将Grid中的自定义控件拖放到Grid中

时间:2012-12-08 19:13:19

标签: drag-and-drop grid windows-runtime custom-controls

在Metro风格的应用程序中,我定义了一个自定义控件,并在Grid中放置了几个实例。什么是让用户从网格的一个单元格拖动控件并将其放入另一个单元格的最佳方法?

1 个答案:

答案 0 :(得分:1)

这取决于你想要达到的目标。从我的角度来看 - 最好的方法是实现一个行为,这样你就可以在UI的不同位置重用它,并可能与其他人共享它。从您的角度来看 - 最好的方法可能是您执行自定义实现的最简单方法,该实现将与托管网格的Page / UserControl绑定。

如果你问的是如何做拖拽& drop part - 您可以将自定义控件上的ManipulationMode设置为TranslateX,TranslateY并处理ManipulationStarted事件,您可以将控件移动到全屏或网格大小的弹出窗口,并通过更新Margin,Canvas在ManipulationDelta事件中移动它或者RenderTransform属性,最后是ManipulationCompleted - 将它放在符合条件的单元格中。

您可以使用Popup确保将自定义控件拖过其他任何内容。

要计算网格和弹出窗口之间的位置,您可以使用类似grid.TransformToVisual(popup).TranformPoint()。

您还可以执行某些操作来突出显示控件在释放时将丢弃的网格中的候选目标单元格。