Определить размещение всплывающих окон относительно цели - PullRequest
4 голосов
/ 08 февраля 2012

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

1 Ответ

2 голосов
/ 13 июня 2013

Когда вы устанавливаете 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

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

...