Silverlight, WPF. Как определить, находится ли один элемент управления над другим? - PullRequest
2 голосов
/ 04 ноября 2010

Лучшее решение для проверки - один элемент управления расположен над другим.

Например, у меня есть два текстовых поля, и когда один текстовый ящик находится над другим, мне нужно скрыть один из них.

И мне нужно определить, перекрываются ли эти хлопья, прежде чем я добавлю их в дерево висул!

Ответы [ 2 ]

3 голосов
/ 04 ноября 2010

Полагаю, вы имеете в виду, что хотите узнать, перекрываются ли они в 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;
0 голосов
/ 04 ноября 2010

Если вам нужен инструмент, а не программное решение, snoop делает это для приложений WPF. Он показывает вам иерархическое представление композиции элементов управления в вашем приложении во время выполнения.

Никогда не использовал его, но Silverlight Spy кажется эквивалентом Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...