Silverlight拖放(不带画布)

Silverlight拖放(不带画布),silverlight,positioning,Silverlight,Positioning,我正在尝试将Silverlight元素从窗口的一个部分拖放(滑动)到另一个部分 我已经在元素上实现了MouseLeftButtonDown、MouseMove和MouseLeftButtonUp事件处理程序,但是遇到了一些问题 我看到的所有示例都涉及通过设置Canvas.Left和Canvas.Top属性来移动元素。我试图操纵的元素都不在画布中。有没有办法根据鼠标坐标设置被拖动元素的绝对位置?或者,在我错过的某个地方,是否有一个预先打包的解决方案来解决这个问题?除了画布之外,所有面板都使用某种约

我正在尝试将Silverlight元素从窗口的一个部分拖放(滑动)到另一个部分

我已经在元素上实现了MouseLeftButtonDown、MouseMove和MouseLeftButtonUp事件处理程序,但是遇到了一些问题


我看到的所有示例都涉及通过设置Canvas.Left和Canvas.Top属性来移动元素。我试图操纵的元素都不在画布中。有没有办法根据鼠标坐标设置被拖动元素的绝对位置?或者,在我错过的某个地方,是否有一个预先打包的解决方案来解决这个问题?

除了画布之外,所有面板都使用某种约束来定位它们的孩子。只有画布允许您使用绝对定位。这就是为什么我认为这是实现拖放的唯一方法


可以在现有面板的顶部随意使用画布。只需记住将拖动的元素从其原始父元素中移除,并将其放置在画布中(或拖动某种副本),然后在鼠标向上移动时执行相反的操作。

实现绝对定位任何容器(而不仅仅是画布)中的项目的一种方法是使用转换而不是左/顶属性。例如,要设置为Left=50 Top=80,您可以通过转换来修改边距值。

我在触发MouseLeftButtonDown事件时动态创建一个画布,使用该画布拖动内容,并在触发MouseLeftButtonUp时删除画布,从而实现了这一点。有点像黑客,但它是有效的。和我在程序中遇到的问题完全一样。我看过关于画布控件的各种教程,但我花了数小时试图调整它以适应我正在使用的控件,甚至根本不起作用,但不管是谁,问得好,回答得好