Определение размеров элементов управления WPF в соответствии с рекомендациями Windows Design Guideline - PullRequest
1 голос
/ 25 марта 2019

Как настроить WPF, чтобы его элементы управления использовали размеры, рекомендованные Microsoft?

Например, кнопка должна иметь высоту 23 пикселя, включая прозрачную границу 1 пиксель. Как мне реализовать прозрачную границу? Button.BorderBrush контролирует видимую границу.

Другим примером является однострочное текстовое поле , высота которого должна составлять 23 пикселя.

Должен ли я все стилизовать вручную? Или есть способ заставить элементы управления по умолчанию работать с пользовательским интерфейсом Windows?


Обновление: Вот некоторые из различий.

Управление WPF:

WPF controls

Стандартные элементы управления Windows: (из диалогового окна Common Item , например, в Блокноте, нажав Файл> Открыть)

Common Item Dialog controls

Это не идеальное сравнение, поскольку в диалоге Common Item поле имени файла - это ComboBox, а не TextBox. Я попытался сравнить диалоговые окна «Настройка печати» и «Печать» (также из Блокнота), но они не используют кнопки того же размера или даже тот же шрифт, что и диалог открытия файла. Я постоянно забываю, что здесь я имею дело с Microsoft, а не с Apple.

Существует различие в отношении кнопки, которая одинакова во всех диалоговых окнах Блокнота, которая по умолчанию не соответствует WPF. Если кнопка является кнопкой по умолчанию, в Блокноте граница становится толще. Прозрачная рамка кнопки станет синей. Для кнопки «Блокнот», отличной от кнопки по умолчанию, вы можете щелкнуть один пиксель за пределами видимой границы и все же нажать кнопку. Это не работает для кнопки WPF.

Гибкость хороша, но встроенные элементы управления "просто-просто-отлично-выглядят" были бы действительно хороши. Если бы было подходящее решение, в котором мне не нужно было бы думать об этом, это было бы замечательно.

Вот XAML для элементов управления WPF:

<StackPanel Name="controls" Margin="20">
    <TextBox Text="Default TextBox" />
    <TextBox Height="23" Text="TextBox with height 23" />
    <Button Content="Cancel" />
    <Button Height="21" Content="Cancel" IsDefault="True" />
</StackPanel>

И код позади:

foreach (Control control in controls.Children) {
    control.Margin = new Thickness(0, 10, 0, 10);
    control.VerticalContentAlignment = VerticalAlignment.Center;
}
...