【.Net码农】XAML资源入门

一.  资源(Resources)
1.  XAML 中定义资源的语法格式如下:
<根元素对象.Resources>
<资源定义  />
</根元素对象.Resources>
在 Windows 8 Metro 应用开发中,每个 Framework 对象都支持 Resources 属性。
也就是说,可以在不同控件或者页面定义特定的 Resources。
例如,在 Grid 和 Button 中定义 Resources:
<Grid>
<Grid.Resources>
<LinearGradientBrush x:Key="bgBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Blue" Offset="0.75" />
<GradientStop Color="Green" Offset="1.0" />
</LinearGradientBrush>
</Grid.Resources>
<Button>
<Button.Resources>
....
</Button.Resources>
</Button>
</Grid>
2.  XAML 资源字典(ResourceDictionary) 
XAML 资源的概念在一定程度上简化了 XAML 页面代码,对于管理批量资源代码集合,XAML 还提供<ResourceDictionary>资源
字典标记进行声明。
在 Windows 8 Metro 应用开发中,所有能够被定义在资源字典(ResourceDictionary)的对象必须是可被共享使用的。可以被应用
于资源字典的对象如下(来自 MSDN):
1. Style and Template
2. Brushes and Colors
3. Animation types (Storyboard)
4. Transforms
5. Matrix and Maxtrix3D 
6. Point
7. Thickness and CornerRadius
8. XAML intrinsic data types 
3.  XAML 资源字典(ResourceDictionary)的定义
在资源字典(ResourceDictionary)中,每一个资源项必须定义 x:Key,也就是所谓的唯一标识的资源名称,这样可以方便读取访问。
例如以下代码,在 Grid.Resources 中定义资源 x:Key = "bgBrush",  我们可以在 Button 中调用资源 x:Key,应用资源到控件。
定义资源字典的方法:
方法一:在 XAML 中定义资源字典
<Grid x:Name="LayoutRoot">
<Grid.Resources>
<ResourceDictionary>
<LinearGradientBrush 
x:Key="bgBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Blue" Offset="0.75" />
<GradientStop Color="Green" Offset="1.0" />
</LinearGradientBrush>
</ResourceDictionary>   
</Grid.Resources>
<Button 
x:Name="btnSubmit" Background="{StaticResource bgBrush}" 
Height="60" Width="120" Margin="112,23,168,217"/>
</Grid> 
方法二:  在后台代码中定义资源字典(ResourceDictionary)
ResourceDictionary dict = new ResourceDictionary();
LinearGradientBrush bgBrush = new LinearGradientBrush();
bgBrush.StartPoint = new Point(0.5, 0);
bgBrush.EndPoint = new Point(0.5, 1);
GradientStopCollection stops = new GradientStopCollection();
GradientStop stop1 = new GradientStop();
stop1.Color = Colors.Yellow;
stop1.Offset = 0.0;
stops.Add(stop1); 
GradientStop stop2 = new GradientStop();
stop2.Color = Colors.Blue;
stop2.Offset = 0.75;
stops.Add(stop2);
GradientStop stop3 = new GradientStop();
stop3.Color = Colors.Green;
stop3.Offset = 1.0;
stops.Add(stop3);
bgBrush.GradientStops = stops;
dict.Add("bgBrush", bgBrush);
this.LayoutRoot.Resources = dict;
this.btnSubmit.Background = (LinearGradientBrush)this.LayoutRoot.Resources["bgBrush"];
完成后台代码定义后,应用运行时,将自动应用资源到对象。
<Grid x:Name="LayoutRoot" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="btnSubmit" Height="60" Width="120" Margin="112,23,168,217"/>
</Grid>
4.  XAML 资源字典(ResourceDictionary)的分类
在 WPF 开发中, XAML 资源可被分为静态资源(StaticResource)和动态资源(DynamicResource)两类,但是在 Windows 8 Metro
应用开发中,XAML 仅支持静态资源(StaticResource)。
根据资源应用域的不同,XAML 资源也可被分为 FrameworkElement.Resources 和 Application.Resources。 
FrameworkElement.Resources 是将资源对象应用于同一个对象树的不同对象上,也可被称为即时资源(Immediate Resources), 
或者称为页面资源(Page Resources)。
通常来说,FrameworkElement.Resources 会被定义在 XAML 页面根元素上。
Application.Resources 可以被认为是贯串整个应用级别的资源,资源被定义在 Application.Resources 中,相比
FrameworkElement.Resources 而言,Application.Resources 应用范围较广,其生命周期也比  FrameworkElement.Resources
要长。
通常来说,Application.Resources 会被定已在 App.Xaml 页面。例如,在创建 Metro 应用时,  Visual Studio 2012 将自动生成
App.Xaml 页面,其代码如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries> 
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary> 
</Application.Resources>
5.  XAML 资源(Resources)引用方法
在”XAML 实例教程系列  -  标记扩展(Markup Extensions)  "中,曾经介绍过 StaticResource (静态资源)的引用,  这里不在赘述。
需要留意的是,资源作用域是“就近原则”,如果在对象内部定义相关资源,对象会自动忽略 Application.Resource,应用“最近”
的资源。
6.  XAML 合并资源字典属性(ResourceDictionary.MergedDictionaries) 
为了方便调用外部资源文件,资源字典(ResourceDictionary)提供了 MergedDictionaries 属性。
通常来说,合并资源字典属性会被定义在 Application.Resources,  也就是在 App.xaml 文件中。
在使用合并资源字典属性时,需要注意资源的查找顺序;
在 ResourceDictionary.MergedDictionaries 中定义多个外部资源文件,其查找资源顺序时由下往上逆行查找的。例如:
<Application.Resources>
<ResourceDictionary>
<SolidColorBrush Color="#d0157820" x:Key="muddyBrush"/>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="rd1.xaml" />
<ResourceDictionary Source="rd2.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>   
在 ResourceDictionary.MergedDictionaries 中定义两个资源字典源,rd1.xaml 和 rd2.xaml。  如果在两个资源文件中存在相同
x:key 的资源,rd2.xaml 中的资源将被优先采用。
作为外部资源合并,应用本身定义的资源永远具有较高的优先级。 
也就是说,如果在本地资源定义中,出现与 rd1.xaml,rd2.xaml 同名的资源,  本地资源都被会优先采用。
7.  主题资源字典属性(ResourceDictionary.ThemeDictionaries)
在 Windows 8 Metro 应用开发中,主题资源字典(ThemeDictionaries)是一个特殊的合并资源字典。
其目的是为应用提供多主题支持,提高用户体验性。
创建默认 Windows 8 Metro 应用时,Visual Studio 2012 将自动生成主题资源代码,例如:
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<x:String x:Key="BackButtonGlyph"> </x:String>
<x:String x:Key="BackButtonSnappedGlyph"> </x:String>
</ResourceDictionary>
<ResourceDictionary x:Key="HighContrast">
<x:String x:Key="BackButtonGlyph"> </x:String>
<x:String x:Key="BackButtonSnappedGlyph"> </x:String>
</ResourceDictionary> 
<ResourceDictionary x:Key="GreenTheme">
<SolidColorBrush x:Key="MyBackgroundBrush" Color="Green"></SolidColorBrush>
</ResourceDictionary>
<ResourceDictionary x:Key="BlackTheme">
<SolidColorBrush x:Key="MyBackgroundBrush" Color="Black"></SolidColorBrush>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
8.   
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值