2010-10-27 2 views
1

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

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

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

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

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

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

ответ

1

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

+0

Спасибо за ответ. Однако это не работает, потому что всплывающее окно может появляться в любом месте экрана. – user380719

+0

Достаточно честный - обновил свой ответ. –

+0

Да, это было бы так. Я надеялся, что будет что-то проще (встроено) – user380719

0

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

Смежные вопросы