【发布时间】:2011-05-05 00:34:25
【问题描述】:
检查的最佳解决方案是一个控件位于另一个控件之上。
例如,我有两个 TextBox,当一个 TextBox 在另一个之上时,我需要隐藏其中一个。
并且我需要确定这些控制是否重叠,然后才能将它们添加到可视树中!
【问题讨论】:
标签: .net wpf silverlight controls
检查的最佳解决方案是一个控件位于另一个控件之上。
例如,我有两个 TextBox,当一个 TextBox 在另一个之上时,我需要隐藏其中一个。
并且我需要确定这些控制是否重叠,然后才能将它们添加到可视树中!
【问题讨论】:
标签: .net wpf silverlight controls
如果您追求的是工具而不是编程解决方案,snoop 会为 WPF 应用程序执行此操作。它在运行时向您显示应用中控件组合的分层视图。
从未使用过,但Silverlight Spy 似乎是 Silverlight 的等价物。
【讨论】:
我假设你的意思是你想知道它们是否在 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;
【讨论】:
GetBoundsRelativeTo(...) 的实现:silverlight.codeplex.com/SourceControl/changeset/view/…
Rect 实例并使用上述方法检查是否有任何相交。