Установить размер шрифта WPF в зависимости от размера экрана - PullRequest
1 голос
/ 07 апреля 2011

Я хотел бы иметь размер шрифта по умолчанию, основанный на разрешении экрана пользователя. т.е. если ширина рабочей области экрана меньше 1024, используйте размер шрифта 10, в противном случае используйте размер шрифта 14. В настоящее время я использую «SystemParameters.WorkArea.Width» для определения ширины

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

<Window.Resources>

    <local:SetFontSize x:Key="myConverter" />

    <Style TargetType="{x:Type Control}" x:Key="baseStyle">
        <Setter Property="FontSize" Value="14"  />
        <Setter Property="FontFamily" Value="Calibri" />           

</Window.Resources>

Я обнаружил приведенное ниже событие, но, похоже, просто не могу связать их вместе (хотя я могу пойти по этому неправильному пути)

<Window.Triggers>
    <EventTrigger RoutedEvent="SizeChanged">          
    </EventTrigger>
</Window.Triggers>

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Имейте в виду, что приложения WPF «поддерживают DPI» и размеры шрифта не в пикселях - поэтому, если пользователь использует другой параметр DPI для увеличения размера шрифта, он будет автоматически отражен в вашем приложении WPF. Надеюсь, у пользователей есть возможность использовать настройки DPI так, как они должны?

(Если другие приложения используют размер шрифта 10 и он слишком мал, вместо того, чтобы переписывать это приложение, они, вероятно, настроят свой DPI - если никакие другие приложения не используют размер шрифта 10, он, вероятно, слишком мал для всех пользователей)

Я понимаю, что это не ответ, но стыдно жертвовать дизайном и взламывать вещи для людей, которые не будут изменять свои настройки DPI? Я слишком негативен? :)

2 голосов
/ 07 апреля 2011

Зачем тебе это все равно? Wpf использует абстрактные координаты и преобразует их в пиксели с использованием текущего разрешения монитора и разрешения. Таким образом, ваше приложение должно автоматически масштабироваться, чтобы выглядеть одинаково на каждом экране. Я бы предложил использовать эластичный макет, полосы прокрутки и т. Д., Чтобы ваше приложение использовалось на небольших экранах.

...