Изменение размера шрифта всех элементов пользовательского интерфейса при использовании ресурса Stati c из App.xaml в WPF - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно изменить размер шрифта для всего текста в приложении.

Я пробовал сделать следующее, но это не помогло: -

<Style x:Key="fontsize" TargetType="{x:Type FrameworkElement}">
    <Setter Property="Control.FontSize" Value="20"/>
</Style>
<Style TargetType="{x:Type FrameworkElement}" BasedOn="{StaticResource fontsize}"/>

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

<Style TargetType="TextBlock" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="TextBox" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="DataGridCell" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="MenuItem" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="DatePicker" BasedOn="{StaticResource fontsize}"/>

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

Ответы [ 3 ]

0 голосов
/ 20 июня 2020

Создайте глобальный стиль для окна в App.xaml.

    <Application.Resources>
        <Style x:Key="WindowStyle" TargetType="{x:Type Window}">
            <Setter Property="FontStyle" Value="Italic" />
            <Setter Property="FontSize" Value="24" />
            <Setter Property="Foreground" Value="Green"/>
        </Style>
    </Application.Resources>

и установите этот стиль для необходимого windows.

<Window x:Class="YourNamespace.MainWindow"  Style="{StaticResource WindowStyle}".....>

для переопределения стиля для usercontrol

           <local:UserControl1>
                <local:UserControl1.Style>
                    <Style TargetType="UserControl">
                        <Setter Property="FontSize" Value="10"/>
                    </Style>
                </local:UserControl1.Style> 
            </local:UserControl1>
0 голосов
/ 20 июня 2020

Здесь задействованы два элемента управления. Вы, возможно, думаете: «А как насчет этой ячейки или этого календаря?». В их шаблонах текст отображается в виде текстового блока. Когда вы устанавливаете заголовок для элемента меню или содержимого на этикетке, вы получаете сгенерированный текстовый блок.

Следовательно, вам «только» нужно установить стиль как для текстового блока, так и для текстового поля:

    <Application.Resources>
        <ResourceDictionary>
            <Style TargetType="TextBlock">
                <Setter Property="FontSize" Value="20"/>
            </Style>
            <Style TargetType="TextBox">
                   <Setter Property="FontSize" Value="20"/>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Имея сказал это.

Как указал Клеменс.

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

Это не просто «очевидно», что метка заканчивается текстовым блоком, когда вы устанавливаете контент. Аналогично элемент меню и заголовок. Поэтому я подумал, что стоит опубликовать этот ответ.

0 голосов
/ 20 июня 2020

в App.xaml

        <Style TargetType="TextBlock">
            <Setter Property="FontSize" Value="20"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...