如何从 App.xaml 继承命名样式?

How do I inherit a named style from App.xaml?

为了帮助我的 WPF 应用程序有类似的感觉,我已经开始在应用程序级别使用样式:

<Application x:Class="MyApplication.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <Style TargetType="Button">
        <Setter Property="Margin" Value="10"/>
        <Setter Property="Padding" Value="5"/>
        <Setter Property="MinWidth" Value="60"/>
    </Style>

    <Style TargetType="TextBox">
        <Setter Property="Margin" Value="10"/>
        <Setter Property="Padding" Value="5"/>
        <Setter Property="MinWidth" Value="60"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>

    <Style TargetType="TextBlock">
        <Setter Property="Margin" Value="10"/>
        <Setter Property="Padding" Value="5"/>
        <Setter Property="MinWidth" Value="60"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
</Application.Resources>

现在这对我的大多数控件都很好用,但我想更深入一点,为 headers 之类的东西添加特定的样式类型。从每个 window 我都这样做了:

<Window x:Class="myApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="150" Width="300">
<Window.Resources>
    <Style x:Key="HeaderStyle" TargetType="TextBlock">
        <Setter Property="Foreground" Value="Gray" />
        <Setter Property="FontSize" Value="24" />
    </Style>
</Window.Resources>
<StackPanel>
    <TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>
    <TextBlock >Some content</TextBlock>
</StackPanel>

如何从 App.xaml 执行此操作?如果我想更改格式,则不必触摸每个 window。

我觉得我应该首先将在 window 中工作的相同样式 x:Key 添加到应用程序。然后将其添加到 window

xmlns:app="clr-namespace:myApp"

如果这是正确的,我不知道从这里去哪里。这是我在黑暗中试图让它发挥作用的照片之一

<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>

感谢任何建议。

您遇到的问题: <TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock> 是您正在尝试添加对 App.xaml 的引用,但是您不必这样做。

您可以使用此代码 <TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>