c# - 拖动后获取 Canvas 子元素的位置。

标签 c# wpf drag-and-drop

我有一个带有几个 child 的 Canvas,每个 child 都有一个 MouseDragElementBehavior 附加。像这样:

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

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

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

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

最佳答案

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

关于c# - 拖动后获取 Canvas 子元素的位置。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317734/

相关文章:

wpf - 应用程序应该有 3 层

java - 将 View 添加到 GridLayout 中的特定行和列

angularjs - 嵌套的 ng-repeat 拖放,AngularJS

c# - 从 jQuery 对话框按钮事件中单击 ASP.NET 按钮

c# - 试图找到在图中导航一组边的最快方法

wpf - 为什么我的WPF突然叛逆了?

wpf - 在对虚拟化 ListView 进行分组时,如何避免 VirtualizingStackPanel.MeasureOverride 卡住?

javascript - 使用 jQuery UI 拖放 : changing the dragged element on drop

c# - C# 中字符串的 SHA256 哈希值与网站上的哈希值不一致

c# - 范围内的局部或参数错误