WPF中的資源的概念有點類似 web 技術中的靜態資源的概念。可以是一個樣式,也可以是一個button的邊框設定集合。
可以簡單的將資源分為如下幾個類別:
<Window.Resources>
<SolidColorBrush x:Key="SolidColor" Color="Red">
</SolidColorBrush>
</Window.Resources>
使用花括號和關鍵字 StaticResource
<StackPanel>
<Button Content="我是一個按鈕" Margin="10" BorderBrush="{StaticResource SolidColor}"></Button>
</StackPanel>
右鍵工程,點選新增-資源字典,命名為 DictionaryButton.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="GlobalSolidColor" Color="Yellow"></SolidColorBrush>
<Style x:Key="DefaultButtonStyle" TargetType="Button">
<Setter Property="Foreground" Value="Blue" ></Setter>
<Setter Property="FontSize" Value="20" ></Setter>
<Setter Property="BorderBrush" Value="Pink" ></Setter>
<Setter Property="BorderThickness" Value="10" ></Setter>
</Style>
</ResourceDictionary>
在 App.xaml 檔案中引入全域性資原始檔 DictionaryButton.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DictionaryButton.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<StackPanel>
<Button Content="我是一個按鈕" Margin="10" Style="{StaticResource DefaultButtonStyle}"></Button>
</StackPanel>
就資源本身而言,動態資源並沒有什麼特殊之處,僅僅是在處理方式上面的差異。
參考 表單資源
<StackPanel>
<Button Content="改變下面控制元件的邊框顏色" Margin="10" Click="Button_Click" ></Button>
<Button Content="我是一個按鈕" Margin="10" BorderBrush="{DynamicResource SolidColor}" BorderThickness="10"></Button>
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Resources["SolidColor"] = new SolidColorBrush(Colors.Blue);
}
https://github.com/Naylor55/WPF-Taste/tree/main/resource/ResourceTaste