WPF 资源字典【转】
使用好处:存储需要被本地话的内容(错误消息字符串等,实现软编码),减少重复的代码,重用样式,实现多个项目之间的共享资源;
修改一个地方所有引用的地方都会被修改,方便统一风格;
使用方法,归纳起来主要有下面几个步骤:
a. 创建资源字典文件,
b. 资源字典集成
c. 使用字典中的资源
说明:在创建资源的时候要确保资源文件的编译选项为page,这样就能够保证XAML资源文件最终能够编译为baml文件。但是如果设置为Resource也是一个不错的选择,这样它能够嵌入到程序集中,但是不被编译,当然其解析的速度回稍微慢一点
资源文件分级:
系统性资源,一般会在app.xaml中集成;
<ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Test.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
窗体级资源;
<Window.Resources> <SolidColorBrush x:Key="FadeBrush" Color="Red"/> </Window.Resources>
文件级资源;在窗体中再将其注册为窗体资源;
<Window.Resources> <ResourceDictionary Source="MyResouceDictionary.xaml"></ResourceDictionary> </Window.Resources>
对象控件级资源:定义在某个ContentControl ,作为子元素的共享资源;
<Button Grid.Row="0" Click="Button_Click" Background="{StaticResource FadeBrush}" > <Button.Resources> <SolidColorBrush x:Key="FadeBrush" Color="White" ></SolidColorBrush> </Button.Resources> <Button.Content> <TextBlock Background="{StaticResource FadeBrush}" >看我自己的颜色</TextBlock> </Button.Content> </Button>
文本框的背景显示白色;
资源优先级:
具体引用时,从所在容器向上查找,比如有相同key值的系统资源和窗体级资源,那么使用窗体级资源;
对象级资源会覆盖窗体级资源;