【问题标题】:Make a control topmost in WPF在 WPF 中制作最顶层的控件
【发布时间】:2011-12-06 19:46:02
【问题描述】:

我有一个表单,用户可以在其中选择各种表单元素并拖动它们。由于用户可以自定义表单的布局,因此我使用的是画布,所有元素都是它的子元素。

当两个元素位于同一区域时,无论最后添加哪个作为画布的子元素,都将在顶部绘制。我希望能够将任何活动元素(被拖动的元素)设置为最顶部的元素。

我使用了 SetZOrder 方法,将它设置为 0,但它什么也没做。在检查所有调用 GetZOrder 的元素后,我得到的每个元素都为 0,这就是为什么将其设置为 0 并没有什么不同。

我找到并且确实有效的唯一解决方案是删除元素并将其添加到画布。

        _mainCanvas.Children.Remove(_selectedElement);
        _mainCanvas.Children.Add(_selectedElement);

虽然这行得通,但我觉得必须有一种更受欢迎和更合适的方式来做到这一点。

【问题讨论】:

标签: wpf topmost


【解决方案1】:

ZIndex 确实确定哪个是最高的。最高 ZIndex 获胜。尝试将您希望位于最顶端的 ZIndex 设置为高于其他 ZIndex 的数字。

【讨论】:

  • 这是ZIndex..
  • @H.B.哎呀!这就是我从记忆中得到的。固定。
  • 我的问题是 ZIndex 默认为 0。它不能防止多个控件具有相同的 ZIndex。我可以默认所有控件的 ZIndex 为 1,然后当您选择一个控件时将 ZIndex 设置为 0,但是当它未被选中时,我还必须将其设置回 1。我希望我可以将 ZIndex 设置为 0,它会自动移动所有其他 ZIndex 值,然后您不必关心跟踪先前选择的元素并将 ZIndex 设置回更高的值。在这一点上,只需删除和添加控件似乎更简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多