Как сделать исключение для стиля Application.Resources в указанном c Grid.Resources - PullRequest
0 голосов
/ 09 февраля 2020

Я делаю небольшое приложение WPF для себя, используя Visual Studio, C#,. NET Standard и WPF в этом конкретном c проекте.

Я определил стиль для всех TextBlocks и TextBoxes в Applications.Resources, как показано ниже.

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

Затем в главном окне у меня есть сетка, содержащая несколько кнопок.

<Grid>
    <Grid.Resources>
        <Style TargetType="Button">
            <Setter Property="FontSize" Value="50" />
        </Style>
        <Style TargetType="TextBlock">
            <Setter Property="FontSize" Value="50"/>
        </Style>
    </Grid.Resources>
    <Button Grid.Column="0" Content="DASHBOARD" Command="local:CustomCommands.ShowDashboard"/>
</Grid>

Я хотел бы установить для текстовых блоков / текстовых полей в этом Speci c кнопки более широкий шрифт.

Я пробовал использовать много разных синтаксисов, но не смог с ними справиться. Я также попытался определить x: Key для этого стиля в Grid.Resources и использовать его в указанном c кнопочном элементе управления. Это тоже не сработало.

Может кто-нибудь сообщить мне, каким образом мне сообщить моему приложению, что текст на этих кнопках будет иметь больший размер шрифта?

1 Ответ

0 голосов
/ 28 февраля 2020

TextBlock, созданный для содержимого строки ContentPresenter внутри шаблона Button, не применяет локально определенные ресурсы, т. Е. Ресурсы в вашей таблице.

Самый простой способ решения вашей проблемы - это явное определение TextBlock как содержимое кнопки.

<Grid>
    <Grid.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="FontSize" Value="50"/>
        </Style>
    </Grid.Resources>
    <Button Grid.Column="0" Command="local:CustomCommands.ShowDashboard">
        <TextBlock Text="DASHBOARD" />
    </Button>
</Grid>
...