【问题标题】:WPF: Is there a way to directly get the Window object a control is on?WPF:有没有办法直接获取控件所在的 Window 对象?
【发布时间】:2011-03-21 08:04:55
【问题描述】:

有没有办法直接获取控件所在的Window对象?

【问题讨论】:

    标签: wpf window controls


    【解决方案1】:

    假设控件位于窗口的正下方,您可以在 LogicalTreeHelper 上调用GetParent

    当然,如果 Control 不是直接后代,您可能需要使用 LogicalTreeHelper 来遍历树。

    【讨论】:

    • 这比我目前拥有的要好,但我有点恼火的是没有 GetWindow 方法。
    【解决方案2】:

    您很可能在与控件交互的那一刻处于应用程序活动窗口中。

    所以在这种情况下,stackoverflow 上的其他帖子也可能会有所帮助:

    stackoverflow: get active window(s) in wpf

    【讨论】:

    • 这对于我的用例来说看起来很脆弱,但我会给你一点,因为它在显示带有 CenterOwner 集的弹出窗口时非常有用。
    【解决方案3】:

    有点晚了,但以下对我来说很好用。

    var ownerWindow = Window.GetWindow(yourControl);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多