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 上有關於樣式和資源的詳盡文章,這些文章的深度超出了這裡提供的深度。