程序中的数据可以放在数据库里、可以存储在变量里,也可以存储在程序主体之外的文件里。外部文件与程序主体分离,有可能造成丢失或损坏,为避免丢失或损坏,编译器允许我们将外部文件编译进程序主体,成为程序主体不可分割的一部分。这就是传统意义上的程序资源(也称二进制资源)。
WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源,每个界面元素可以携带自己的资源并可被自己的子级元素共享。模板、程序样式和主题就常常放在对象级资源里。这样一来,WPF程序中数据就分为四个等级存储:
- 数据库里的数据相当于存放在仓库里;
- 资源文件里的数据相当于放在旅行箱里;
- WPF对象资源里的数据相当于放在随身携带的背包里;
- 变量中的数据相当于拿在手里。
一、WPF对象级资源的定义与查找
WPF的界面元素都具有继承自FrameworkElement的Resources属性,其类型为ResourceDictionary。ResourceDictionary以“键--值”对的形式存储资源,当需要使用某个资源时,使用“键--值”对可以索引到资源对象。保存资源时,ResourceDictionary视资源对象为object类型,所以使用资源时要先对资源对象进行类型转换。xaml编译器能够根据标签自动识别资源类型,
类型不对则抛出异常。
<Window.Resources>
<sys:String x:Key="str">
沉舟侧畔千帆过,病树前头万木春。
</sys:String>
<sys:Double