Ответ ДА. Если вы хотите, чтобы ваши элементы управления настраивали свой размер в зависимости от размера окна, есть много способов сделать это.
Для почти любого управления они полезны:
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;
Не могли бы вы привести пример того, что вы пытаетесь сделать? Вы можете просто написать