Определить размещение всплывающих окон относительно цели

Как определить местоположение (PlacementMode) элемента управления Popup относительно его цели после его отрисовки на экране? Я замечаю, что, хотя я установил "Размещение" моего всплывающего окна "Вниз", когда на экране осталось мало места, он выбирает инвертировать Место размещения. Это все хорошо, если есть метод получения обновленного Места размещения. До сих пор проверка Местоположения, кажется, возвращает фактическое значение, которое я установил, и вертикальные и горизонтальные смещения равны 0.0.

1 ответ

Решение

Когда вы устанавливаете PlacementMode, вы предлагаете, где бы вы хотели, чтобы всплывающее окно отображалось относительно PlacementTarget, PlacementRectangle или по умолчанию его родитель. В целях безопасности всплывающее окно не может быть нарисовано за пределами экрана.

Ссылка на размещение всплывающих окон:

http://msdn.microsoft.com/en-us/library/bb613596.aspx

Если вы хотите лучше контролировать способ отображения всплывающего окна при столкновении с краем экрана, можно указать настраиваемую позицию всплывающего окна.

Как описано здесь:

http://msdn.microsoft.com/en-us/library/ms743607.aspx

Это позволяет вам указать первичное смещение и выравнивание и вторичное, если первое не доступно. Когда возникает конфликт, он выбирает место размещения, которое отображает наибольшую часть всплывающего окна.

Если вам действительно нужны координаты вашего всплывающего окна, в этом посте есть трюк win32, который вы можете использовать, чтобы получить точное местоположение вашего всплывающего окна.

WPF Popup Control - Найти координаты X, Y

Но вы должны быть в состоянии решить большинство проблем с макетом, указав пользовательскую позицию.

Другие вопросы по тегам