WPF 中的样式

介绍性发言

在 WPF 中, Style 定义给定可视元素的一个或多个依赖项属性的值。整个应用程序使用样式以使用户界面更加一致(例如,为所有对话框按钮提供一致的大小),并使批量更改更容易(例如,更改所有按钮的宽度。)

样式通常在应用程序中的高级别的 ResourceDictionary 中定义(例如在 App.xaml 或主题中),因此它可以在应用程序范围内使用,但它们也可以针对单个元素及其子元素进行定义,例如应用风格到 StackPanel 内的所有 TextBlock 元素。

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="Margin" Value="5,5,5,0"/>
            <Setter Property="Background" Value="#FFF0F0F0"/>
            <Setter Property="Padding" Value="5"/>
        </Style>
    </StackPanel.Resources>
        
    <TextBlock Text="First Child"/>
    <TextBlock Text="Second Child"/>
    <TextBlock Text="Third Child"/>      
</StackPanel>

重要笔记

  • 定义样式的位置会影响它的可用位置。
  • StaticResource 无法解决前向引用。换句话说,如果你要定义依赖于资源字典中的另一个样式或资源的样式,则必须在它所依赖的资源之后/之下定义它。
  • StaticResource 是引用样式和其他资源的推荐方法(出于性能和行为原因),除非你特别要求使用 DynamicResource,例如,对于可在运行时更改的主题。

资源

MSDN 上有关于样式和资源的详尽文章,这些文章的深度超出了这里提供的深度。