【发布时间】:2011-12-06 19:46:02
【问题描述】:
我有一个表单,用户可以在其中选择各种表单元素并拖动它们。由于用户可以自定义表单的布局,因此我使用的是画布,所有元素都是它的子元素。
当两个元素位于同一区域时,无论最后添加哪个作为画布的子元素,都将在顶部绘制。我希望能够将任何活动元素(被拖动的元素)设置为最顶部的元素。
我使用了 SetZOrder 方法,将它设置为 0,但它什么也没做。在检查所有调用 GetZOrder 的元素后,我得到的每个元素都为 0,这就是为什么将其设置为 0 并没有什么不同。
我找到并且确实有效的唯一解决方案是删除元素并将其添加到画布。
_mainCanvas.Children.Remove(_selectedElement);
_mainCanvas.Children.Add(_selectedElement);
虽然这行得通,但我觉得必须有一种更受欢迎和更合适的方式来做到这一点。
【问题讨论】:
-
你看过 Josh Smith 的这篇文章了吗:codeproject.com/KB/WPF/DraggingElementsInCanvas.aspx