Ответ ДА. Если вы хотите, чтобы ваши элементы управления настраивали свой размер в зависимости от размера окна, есть много способов сделать это.
Для почти любого контроля это полезно:
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="..." (set your margin to control the position)
Для гибкой компоновки с использованием сетки:
<Grid>
ColumnDefinition.Width="*"
RowDefinition.Height="*"
Для центральных областей, окруженных панелями или заполняющих остаток строки / столбца:
<DockPanel>
Для того, чтобы сохранить что-то такой же формы, но растянуть или сжать его до нужного размера:
<ViewBox>
Есть много других.
Если вы хотите, чтобы ваши элементы управления становились больше или меньше на экране в зависимости от пользовательских настроек отображения Windows, таких как DPI, это произойдет по умолчанию . Если пользователь увеличит системные значки и шрифты, ваш текст, значки, шрифты и т. Д. Также будут больше.
Если вы хотите связать размер ваших объектов на экране с конкретными настройками системы, вы можете привязать свойства к классам SystemParameters и SystemFonts, например:
SystemFonts.CaptionFontSize
SystemFonts.MenuFontSize
SystemFonts.IconFontSize
SystemFonts.StatusFontSize
SystemParameters.IconHeight
SystemParameters.IconVerticalSpacing
SystemParameters.MaximizedPrimaryScreenHeight
существует около 75 таких настроек. Обычно вы не используете их, потому что обычно достаточно обычной настройки WPF для размеров вашего объекта на основе DPI.
Как правило, вы не хотите, чтобы ваши экранные объекты имели определенное количество пикселей, потому что они выглядят крошечными на экранах с высоким разрешением, даже если конечный пользователь настроил Windows для отображения больших размеров. Это не было бы хорошо. Единственное исключение здесь, если вы хотите делать снимки экрана в виде растровых изображений для определенного разрешения экрана. В этом случае вы можете установить свой размер следующим образом:
control.Height =
desiredHeightInActualScreenPixels
* System.Windows.SystemParameters.MenuHeight
/ System.Windows.Forms.SystemInformation.MenuHeight;