WPF中的资源(Resource)
来源:互联网 发布:网络机房改造合同 编辑:程序博客网 时间:2024/05/21 19:33
什么叫WPF的资源(Resource)?
资源是保存在可执行文件中的一种不可执行数据。在WPF的资源中,几乎可以包含图像、字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性。也就是说,应用程序中非程序代码的内容,比如点阵图、颜色、字型、动画/影片档以及字符串常量值,可将它们从程序中独立出来,单独包装成"资源(Resource)"。
使用资源的优势:
1. 由于不用写在程序代码中,方便管理:便于更新。
2. 优化资源,节省空间。资源一旦定义,便可重复利用。还记得FLASH中的将物体转换为元件吗?一旦将物体转换为元件,就可以重复利用了。在WPF中,似乎与之有共通之处。所不同的是,WPF将资源保存在XAML中,对我们而言是“可见的”。
资源的范围(层级):
WPF提供一个封装和存取资源(resource)的机制,我们可将资源建立在应用程序的不同范围上。WPF中,资源定义的位置决定了该资源的可用范围。资源可以定义在如下范围中:
(1)物件级:此时,资源只能套用在这个Object物件,或套用至该物件的子物件。
(2)文件级:如果将资源定义在Window或Page层级的XAML档中,那么可以套用到这个文件中的所有物件。
(3)应用程序级:如果我们将资源定义在App.xaml 中,那么,就可以将资源套用到应用程序内的任何地方。
(4)字典级:当我们把资源封装成一个资源字典, 定义到一个ResourceDictionary的XAML文件时,就可以在另一个应用程序中重复使用。
每一个框架级元素(
<Page Name="root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Page.Resources>
<SolidColorBrush x:Key="MyBrush" Color="Gold"/>
<Style TargetType="Border" x:Key="PageBackground">
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="TextBlock" x:Key="Label">
<Setter Property="DockPanel.Dock" Value="Right"/>
<Setter Property="FontSize" Value="8"/>
<Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0,3,10,0"/>
</Style>
</Page.Resources>
<StackPanel>
<Border Style="{StaticResource PageBackground}">
<DockPanel>
<TextBlock Style="{StaticResource Label}">Label</TextBlock>
<Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
<Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
</DockPanel>
</Border>
</StackPanel>
</Page>
上例中,我们使用了静态资源(Static Resource),如有需要,我们也可以使用动态资源(Dynamic Resources)。这两者的区别是:静态资源在第一次编译后即确定其对象或值,之后不能对其进行修改。动态资源则是在运行时决定,当运行过程中真正需要时,才到资源目标中查找其值。因此,我们可以动态地修改它。由于动态资源的运行时才能确定其值,因此效率比静态资源要低。
需要说明的是,资源不仅可以在XAML代码中访问,也可以使用C#代码访问和控制它们。方法是使用FindResource查找资源,Resource.Add增加资源和Resource.Remove(移除资源)。
- WPF中的资源(Resource)
- WPF Resource资源
- WPF的资源(Resource)?
- WPF中的资源(二) - 二进制资源
- WPF and Silverlight 学习笔记(十六):WPF资源(Resource)(1)
- WPF and Silverlight 学习笔记(十七):WPF资源(Resource)(2)
- WPF中的资源(一) - 静态资源和动态资源
- WPF中的资源
- WPF中的资源
- WPF中的资源
- Android 资源(resource)
- WPF Resource
- WPF中的静态资源和动态资源
- java中的资源路径resource path
- angularjs之$resource中的资源的方法
- Layout Resource(布局资源)
- Menu Resource(菜单资源)
- Style Resource(样式资源)
- SWING组件学习3:图片以及创建一个带有图片的按钮
- BoundsChecker用法
- [话题]一个美国女人婚契吓坏中国男人
- 软件工程一:软件工程基本观念
- jdom的使用
- WPF中的资源(Resource)
- not in/not exists+null
- 深度解析VC中的消息传递机制(上)
- 项目工作日志(3)
- JSP中文乱码的解决方案
- 深度解析VC中的消息传递机制(下)
- 1.7 [Enterprise Library ] 加密配置数据
- REST与SOAP之比较 ——REST篇
- [观点]谢中卿:北大孔博士陷入金庸崇拜