Как запретить изменять размер окна wpf

от admin

Класс Window

Класс Window унаследован от класса ContentControl. Это означает, что он может содержать только одного потомка (каковым обычно является контейнер компоновки наподобие элемента управления Grid) и что его фон можно закрашивать с помощью кисти путем установки свойства Background.

Можно еще также использовать и свойства BorderBrush и BorderThickness для добавления вокруг окна границы, но эта граница добавляется внутри оконной рамки (то есть по краю клиентской области). Оконную рамку можно вообще удалять путем установки для свойства WindowStyle значения None, что позволяет создавать полностью настраиваемое (т.е. имеющее специальную форму) окно.

— это область внутри окна. Именно в ней размещается содержимое. К не клиентской области относится граница и строка заголовка в верхней части окна. За управление этой областью отвечает операционная система.

Помимо этого, класс Window имеет небольшой набор членов, знакомых любому программисту для Windows. Наиболее очевидными из них являются свойства, которые касаются внешнего вида и позволяют изменять способ отображения не клиентской части окна. Основные члены класса Window перечислены ниже:

Если установлено в true, класс Window позволяет другим окнам «проглядывать» через данное при условии, что для фона был установлен прозрачный цвет. В случае установки в false (поведение по умолчанию), находящееся позади данного окна содержимое не «просматривается», и прозрачный цвет фона визуализируется как черный. В случае использования в комбинации со свойством WindowsStyle, установленным в None, это свойство позволяет создавать окна, имеющие необычную форму.

Icon

Объект imageSource, идентифицирующий значок, который должен использоваться для данного окна. Значки отображаются в левом верхнем углу окна (если в нем применяется один из стандартных стилей границ), в панели задач (если свойство ShowInTaskBar установлено в true) и в окне выбора, которое появляется, когда пользователь нажимает комбинацию клавиш <Alt+Tab> для перехода между работающими приложениями. Поскольку эти значки имеют разные размеры, в используемом для них файле .ico должны содержаться изображения с размерами как минимум 16×16 и 32×32 пикселя.

В последних версиях ОС Windows (Windows Vista и Windows 7) добавлен новый стандарт для значков 48×48 и 256×256 пикселей, размер которых можно изменять. Если свойство Icon установлено в null, окно получает тот же значок, что и приложение (значок для которого можно указать в Visual Studio, дважды щелкнув на узле Properties (Свойства) в окне Solution Explorer и перейдя на вкладку Application (Приложение)). Если свойство вообще опущено, WPF для изображения окна будет использовать стандартный, но непримечательный значок

Тор и Left

Определяют расстояние между левым верхним углом окна и левыми верхними краями экрана (в независимых от устройства единицах). При изменении любого из них генерируется событие LocationChanged. Если свойство WindowStartupPosition установлено в Manual, значения этих свойств можно указывать до появления окна для определения, задавая его начальную позицию. Какое бы значение не использовалось для WindowStartupPosition, эти свойства можно устанавливать в любой момент после отображения окна, изменяя его текущую позицию

ResizeMode

Принимает значение перечисления ResizeMode, которое определяет, может ли пользователь изменять размеры окна. Также влияет на видимость кнопок, отвечающих за разворачивание и сворачивание окна. Чтобы полностью заблокировать размеры окна, используйте значение NoResize. Чтобы пользователь мог только сворачивать окно, применяйте значение CanMinimize. Чтобы пользователь мог изменять размер окна всеми возможными способами, указываете значение CanResize. Чтобы в правом нижнем углу окна отображалась еще и визуальная подсказка, указывающая, что размеры окна разрешено изменять, задавайте значение CanResizeWithGrip.

RestoreBounds

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

ShowInTaskBar

Если установлено в true, окно отображается в панели задач и списке, появляющемся после нажатия комбинации клавиш <Alt+Tab>. Обычно это свойство устанавливается в true только для главного окна приложения.

SizeToContent

Позволяет создать окно, которое автоматически увеличивается в соответствии с размерами содержимого. Это свойство принимает значение перечисления SizeToContent. Чтобы отключить автоматическое изменение размеров окна, используйте значение Manual. Чтобы окно могло увеличиваться в различных направлениях в соответствии с размерами динамического содержимого, применяйте, соответственно, значение Height, Width или WidthAndHeight. При установке значения SizeToContent окно может увеличиваться в размерах в соответствии с содержимым так, что будет выходить за пределы экрана.

Title

Заголовок, который отображается в строке заголовка окна (и в панели задач)

Topmost

Если установлено в true, окно всегда отображается поверх остальных окон в приложении (если только у них это свойство также не равно true). Такая настройка очень удобна для палитр, которые обычно должны «плавать» над другими окнами

WindowStartupLocation

Принимает значение перечисления WindowStartupLocation. Для размещения окна в конкретной позиции с помощью свойств Left и Тор используйте значение Manual. Для размещения окна по центру экрана применяйте значение CenterScreen. Для размещения окна с учетом позиции того окна, которое его запустило, указывайте значение CenterOwner. При отображении немодального окна с использованием значения CenterOwner удостоверьтесь, что свойство Owner нового окна установлено перед тем, как показывать его.

WindowState

Принимает значение перечисления WindowState. Информирует о том, в каком состоянии находится окно: развернутом, свернутом или обычном (и позволяет изменить его). При изменении значения этого свойства генерируется событие StateChanged

WindowStyle

Принимает значение перечисления WindowStyle, которое определяет внешний вид границы окна. Возможные значения: SingleBorderWindow (по умолчанию), ThreeDBorderWindow (граница визуализируется несколько иным образом в Windows ХР), ToolWindow (отображается тонкая граница, удобная для «плавающих» окон с инструментами без кнопок сворачивания и разворачивания) и None (визуализируется очень тонкая приподнятая граница без области для строки заголовка). Увидеть разницу можно на рисунке ниже:

Как заблокировать окно WPF, чтобы его нельзя было перемещать, изменять размер, минимизировать, развернуть или перетащить

Я ищу простой способ заблокировать окно WPF. Есть ли простой стиль окна или свойство, которое я могу установить в окне WPF, чтобы заблокировать окно?

Читать:
Cms bitrix что это

Под блокировкой я подразумеваю, что пользователь не может перемещать, изменять размер, перетаскивать, минимизировать или максимизировать окно.

2 ответы

Настройте окно с помощью:

Это предотвратит сворачивание, разворачивание или перемещение окна пользователем.

ответ дан 06 авг.

как насчет того, если я создам кнопку для минимизации окна, поэтому я хочу, чтобы пользователь минимизировал ее, но если мы говорим о сенсорных экранах, я хочу также запретить ему перетаскивать / перемещать окно влево или вправо, как я могу этого добиться? Спасибо — Рокси’Про

Чтобы предотвратить перемещение или изменение размера окна, обработайте WM_WINDOWPOSCHANGING сообщение в WndProc крюк. С использованием WM_WINDOWPOSCHANGING предотвращает перемещение окна даже на Выигрыш + Shift + левый . Пример присоединенного свойства, которое добавляет это поведение, показан ниже.

Это можно сочетать с WindowStyle и ResizeMode чтобы окно тоже выглядело неподвижным.

Как запретить изменять размер окна wpf

Gray Pipe

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Answered by:

Question

Answers

With the following simple sample markup, the static size of the UserControl (set to 100 x 100) will not change when the window’s size is changed:

Could you please elaborate on your issue? If you want to prevent the window from becoming so small that you won’t be able to see the entire UserControl, you could set its MinHeight and MinWidth properties based on the value of these properties for the UserControl:

  • Marked as answer by Leo (Apple) Yang Tuesday, January 14, 2014 8:54 AM

If you just use proportional sizing then it’ll all just flow and obviate the empty space issue.

  • Marked as answer by Leo (Apple) Yang Tuesday, January 14, 2014 8:54 AM

All replies

On your window tag you can set these two properties to get the result,

Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.

If you want your window to be exactly the size of the usercontrol need to set SizeToContent="WidthAndHeight"

If you want to disable the resize of the window you need to set ResizeMode="NoResize"

Guys thanks for the quick response,

Actually we are trying to restrict the size of "UserControl" but not the window.

yes i agree if we are trying to restrict the size of window, what u guys said is perfect and it works.

but the same i wanted to apply on UserControl.

Thanks in Advance

you need to set the MinWidth, MinHeight, MaxWidth and Maxheight to the UserControl

Rarely a good plan.

Even if you know exactly what kit every user will ever use your app on.

XAML naturally flows like html.

Actual fixed numbers introduce a risk.

Most obvious issue occurs when some user gets a hi res monitor and you app is suddenly laughably small.

Are you sure you can’t accomplish this by just using proportional sizing?

Thanks for your effort srithar,

yes even i tried the logic which you have advised above,

even though we apply the snippet above it can be re-sized 🙁

With the following simple sample markup, the static size of the UserControl (set to 100 x 100) will not change when the window’s size is changed:

Could you please elaborate on your issue? If you want to prevent the window from becoming so small that you won’t be able to see the entire UserControl, you could set its MinHeight and MinWidth properties based on the value of these properties for the UserControl:

  • Marked as answer by Leo (Apple) Yang Tuesday, January 14, 2014 8:54 AM

Guys thanks a lot for the responses 🙂

may be i have driven you all guys into improper direction regarding my issue,

before giving a conclusion i just wanted to be clear relating to my issue,

its a xaml window, we use actually window tag in it, but in my xaml it is UserControl tag,

when i run my app, it invokes a window, when i resize it, i could see all the controls are on the window but empty space can be seen

to over come that i just wanted to fix the size of it.

even now i could not resolve it may be am not sure it can be done or not on Usercontrol tag as we dont have any controls relating to size, which we have for window tag i.e. ResizeMode="NoResize"

anyways for time being am going with an option like adjusting the controls on the window when it is resized 🙂

Запретить изменение размера окна страницы в WPF

У меня есть приложение WPF, для которого не зря установлен определенный размер. Однако пользователь по-прежнему может изменять размер страницы. Я установил все максимальные размеры страницы и получил три разных результата, ни один из которых не подходит для моих нужд.

1) Окно выходит в полноэкранный режим с моим приложением в верхнем левом углу. Остальная часть экрана залита цветом фона страницы.

2) Окно выходит на весь экран, страница остается в центре, а остальная часть экрана заполняется белым пространством.

3) Это худшее решение . Окно изменяет размер и показывает весь мусор, который у меня валяется за пределами страницы!

Все, что я хочу сделать, это запретить кому-либо вообще изменять размер окна! Я новичок в wpf и особенно новичок в xaml, поэтому мне нужно время, чтобы узнать, как правильно настроить автоматическое изменение размера. к сожалению, сейчас не то время (дедлайны!).

Похожие статьи