代码之家  ›  专栏  ›  技术社区  ›  Ievgen

Silverlight,WPF。如何确定一个控件是否位于另一个控件之上?

  •  2
  • Ievgen  · 技术社区  · 14 年前

    要检查的最佳解决方案是一个控件位于另一个控件之上。

    例如,我有两个文本框,当一个文本框位于另一个文本框之上时,我需要隐藏其中一个文本框。

    我需要确定,在我将这些控件添加到visul树之前,这些控件是否重叠了!

    2 回复  |  直到 14 年前
        1
  •  3
  •   herzmeister    14 年前

    我想你是说你想知道它们是否在z维上重叠?

    未测试:

    // requires System.Windows.Controls.Toolkit.dll
    
    using System.Windows.Controls.Primitives;
    // ...
    
    Rect? rect1 = myControl1.GetBoundsRelativeTo(someParentContainer);
    Rect? rect2 = myControl2.GetBoundsRelativeTo(someParentContainer);
    
    bool areIntersecting = rect1 != null && rect2 != null
        && rect1.Value.Intersect(rect2.Value) != Rect.Empty;
    
        2
  •  -1
  •   serg10    14 年前

    如果你想要的是一个工具而不是一个程序化的解决方案, snoop 为WPF应用程序执行此操作。它向您展示了运行时应用程序中控件组成的层次视图。

    从来没用过,但是 Silverlight Spy 似乎是Silverlight的等价物。