Silverlight,WPF。如何确定一个控件位于其他控件上?

时间:2010-11-04 11:49:46

标签: .net wpf silverlight controls

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

例如,我有两个TextBox,当一个TextBox超过另一个时,我需要隐藏其中一个。

我需要确定在将它们添加到visul树之前重叠这个cotnrols!

2 个答案:

答案 0 :(得分:3)

我认为你的意思是你想知道它们是否在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;

答案 1 :(得分:-1)

如果您使用的是工具而非程序化解决方案,snoop会为WPF应用执行此操作。它会在运行时向您显示应用程序中控件组合的分层视图。

从未使用它,但Silverlight Spy似乎是Silverlight等价物。