【问题标题】:Get position of canvas child element after drag.拖动后获取画布子元素的位置。
【发布时间】:2012-07-03 19:21:40
【问题描述】:

我有一个Canvas 和几个孩子,每个孩子都附有一个MouseDragElementBehavior。像这样的:

MouseDragElementBehavior drag = new MouseDragElementBehavior();
drag.Attach(ellipse);

我想拖动一个孩子并在拖动后获得那个孩子的新位置,所以我做了这样的事情:

double left = Canvas.GetLeft(ellipse);
double top  = Canvas.GetTop(ellipse);

问题是我总是在拖动后获得相同的顶部和左侧值,就好像元素从未被拖动一样。 如何获得元素的新位置?

【问题讨论】:

    标签: c# wpf drag-and-drop


    【解决方案1】:

    我找不到任何有用的文档来说明这种行为实际上是如何工作的,但我猜想它是通过设置 Margin 而不是 Canvas.Left/.Top 来“移动”控件的。您是否检查了边距以查看它们是否正在更改?设置 Margin 会更有用,因为它会将兼容性扩展到 Canvas 以外的容器(例如 Grid 或 StackPanel)。

    【讨论】:

    • @JDB,没有边距是完整的。如果父元素为Canvas,则边距为0,0,0,0,当父元素为常规Grid 时,边距将始终保持在元素的初始位置,例如。 Margins: 102.929,85.605,0,0 ...这个MouseDragElementBehaviour很混乱..
    • @DimitryK - 酷。也许您可以将找到的任何有用信息作为单独的答案发布,以便得到认可和投票。
    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多