【问题标题】:Silverlight Drag and Drop (without a Canvas)Silverlight 拖放(无画布)
【发布时间】:2010-05-09 18:37:49
【问题描述】:

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

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

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

【问题讨论】:

  • 我在程序中遇到的完全相同的问题。我看过各种涉及画布控件的教程,但我花了几个小时试图调整它以适应我正在使用的控件,甚至根本不起作用,但是无论如何,好问题,好答案

标签: silverlight positioning


【解决方案1】:

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

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

【讨论】:

  • 我设法通过在触发 MouseLeftButtonDown 事件时动态创建一个 Canvas,使用该 Canvas 拖动东西,并在触发 MouseLeftButtonUp 时删除 Canvas 来实现此功能。有点骇人听闻,但它确实有效。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2013-10-05
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2012-12-01
    相关资源
    最近更新 更多