静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了。
动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源。
<Window x:Class="_22WPF静态资源与动态资源.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:_22WPF静态资源与动态资源"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel>
<Button x:Name="UpdateControl" Margin="10" Content="点击更新" Click="UpdateControl_Click"></Button>
<Button BorderThickness="5" x:Name="button1" Content="测试1" Height="40" Margin="10" BorderBrush="{StaticResource SolidColor}"></Button>
<Button BorderThickness="5" x:Name="button2" Content="测试1" Height="40" Margin="10" BorderBrush="{DynamicResource SolidColor}"></Button>
</StackPanel>
</Grid>
</Window>
后端代码
using System.Windows;
using System.Windows.Media;
namespace _22WPF静态资源与动态资源
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void UpdateControl_Click(object sender, RoutedEventArgs e)
{
//动态改变资源的样式
this.Resources["SolidColor"] = new SolidColorBrush(Colors.Black);
//动态获取样式的详细信息
var solidColor = App.Current.FindResource("SolidColor");
var defaultButtonStyle = App.Current.FindResource("DefaultButtonStyle");
}
}
}
样式
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="SolidColor" Color="Red"></SolidColorBrush>
<Style x:Key="DefaultButtonStyle" TargetType="Button">
<Setter Property="Foreground" Value="Blue"></Setter>
<Setter Property="FontSize" Value="15"></Setter>
</Style>
</ResourceDictionary>
点击更新之后
静态资源的样式不会进行样式修改,动态的可以