Как я могу ограничить размер всплывающего окна на экране - PullRequest
1 голос
/ 27 октября 2010

Я использую всплывающее окно в шаблоне элемента управления MenuItem.

Однако я заранее не знаю, сколько пунктов будет в пункте меню. В результате всплывающее окно может не помещаться на экране, а некоторые элементы могут быть недоступны.

Мое решение состоит в том, чтобы установить MaxSize, скажем, 500, и обернуть ItemsPresenter в ScrollViewer.

Однако это не учитывает размер экрана.

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

По-видимому, WPF достаточно умен, чтобы установить направление всплывающего окна (вверх / вниз, вправо / влево) так, чтобы оно имело тенденцию к центру. Например, если всплывающее окно находится внизу экрана, оно будет всплывать над позицией всплывающего окна, а не под ним. Но я не вижу ничего относительно максимального размера.

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Вы можете использовать комбинацию SystemParameters.PrimaryScreenHeight и верхнюю левую точку Popup, чтобы вычислить, сколько места у вас есть, и установить его как MaxHeight из Popupсодержание.

0 голосов
/ 27 октября 2010

Я считаю, что единственный способ сделать это - подключить событие, например, LayoutUpdated в окне или всплывающем окне, и программно установить ширину с помощью какого-то процентного расчета. MaxWidth на FrameworkElements принимает только дискретные значения.

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