2009-10-25 4 views
3

Я хотел бы знать, было ли какое-то автоматическое определение размера в WPF.WPF: Автоматический размер элементов управления

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

спасибо.

+0

Не могли бы вы привести пример того, что вы пытаетесь сделать? Вы можете просто написать

ответ

3

Во-первых, WPF использует незащищенные пиксели устройства, что означает, что он будет масштабироваться соответствующим образом с выбранным пользователем DPI. Тем не менее, я не думаю, что вы спрашиваете о ДОИ здесь, скорее, вы спрашиваете о масштабировании с разрешением.

Если вы хотите, чтобы ваш пользовательский интерфейс масштабировался до доступного пространства, предоставляемого окном, вы можете использовать a ViewBox control в качестве корневого элемента вашего окна. Затем все, что вы вставляете внутрь, будет масштабироваться в соответствии с тем, как вы настраиваете Viewbox.

Имейте в виду, что это не типичный подход, используемый приложениями, поскольку обычно они будут расти/перепланироваться, чтобы использовать больше места. Например, Grid может использоваться для предоставления более важного раздела пространства пользовательского интерфейса над другим.

3

Ответ ДА. Если вы хотите, чтобы ваши элементы управления настраивали свой размер в зависимости от размера окна, есть много способов сделать это.

Для почти любого управления они полезны:

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; 
Смежные вопросы