资源
指一些非代码应用程序和组件,如位图,字体,声音和图像文件,字符串表。
WPF不仅依赖核心.NET资源系统,还添加2种不同资源类型支持。
二进制资源(位图等)
逻辑资源
存储在Resources属性中的.NET对象(元素的Resources属性中),通常需要共享给多个子元素。
这些逻辑资源通常是样式,数据提供程序。<!-- 定义页面逻辑资源,实现CSS功能 star -->
<Page.Resources>
<!-- 存储预定义好的笔刷对象 -->
<SolidColorBrush x:Key="myBackgroundBrush" Color="Yellow" />
<SolidColorBrush x:Key="myBorderBrush" Color="Red" />
<Button x:Key="myButton" Content="资源作为一个元素使用" />
</Page.Resources>
<!-- 定义页面逻辑资源,实现CSS功能 end -->
<StackPanel VerticalAlignment="Top">
<Button Content="{DynamicResource myButton}" />
<Button Content="跳转" Click="Button_Click"
Background="{StaticResource myBackgroundBrush}"
BorderBrush="{StaticResource myBorderBrush}" />
</StackPanel>
WPF提供了2种访问逻辑资源的方式:
1.静态
由StaticResource实现,只被应用一次。
2.动态
由DynamicResource实现,每次更改都会重新应用。
在程序中定义和使用逻辑资源:
//在当前Page实例中添加逻辑资源对象
this.Resources.Add("myBackgroundBrush", new SolidColorBrush(Color.FromRgb(255,0,0)));
Button button = new Button();
//获取资源字典中指定值
button.Background = (Brush)this.Resources["globe"];
//以静态方式访问逻辑资源
button.Background = (Brush)button.TryFindResource("myBackgroundBrush");
//以动态方式访问逻辑资源
button.SetResourceReference(Button.BorderBrushProperty, "myBorderBrush");