C#探秘系列(五)
来源:互联网 发布:php 去除数组重复元素 编辑:程序博客网 时间:2024/06/10 13:01
XAML标记扩展(一)
标记扩展是一个 XAML 语言概念,常常用在 Windows 运行时 XAML 实现中。标记扩展通常表示某种“快捷方式”,它允许 XAML 文件访问无法只根据支持类型声明元素的值或行为。某些标记可通过纯字符串或其他嵌套的元素设置属性,目的是简化不同 XAML 文件之间的语法或因素处理。使用XAML标记扩展(Markup Extensions)可以轻松实现XAML页面属性赋值,资源引用,类型转换等操作。
一、标记扩展分类
Windows 运行时 XAML 支持在默认 XAML 命名空间下定义并可被 Windows 运行时 XAML 分析程序理解的标记扩展:
• Binding:支持数据绑定,它会延迟一个属性值,直到该值在仅在运行时存在的数据上下文下被解释。 此标记扩展支持很多参数。有关详细信息,请参阅绑定标记扩展。
• StaticResource:支持引用在一个 ResourceDictionary 中定义的资源值。这些资源可以位于不同的 XAML 文件中,但最终必须在加载时可供 XAML 分析器查找。{StaticResource} 用法的参数标识 ResourceDictionary 中的键控资源的键(名称)。
• ThemeResource:类似于 StaticResource 但可响应运行时主题变更。ThemeResource 经常位于 Windows 运行时的默认 XAML 模板中,因为其中的大部分模板专门用于用户在应用运行时切换主题的兼容性。
• TemplateBinding:Binding 的一种特殊情况,它支持 XAML 中的控制模板及其在运行时的最终用法。
• RelativeSource:支持一种特定形式的模板绑定,其中的值来自于父模板。
• CustomResource:适用于资源查找的高级场景。
二、StaticResource
因为我最早用到的标记扩展语法是StaticResource,而且也经常使用,所以先从它说起。StaticResource可以引用事先定义好的资源,如Style和某些控件,从而实现资源引用的功能。
<Page.Resources> <SolidColorBrush x:Key="MyBrush" Color="Yellow" /> <Style TargetType="Button" x:Key="MyButtoStyle"> <Setter Property="Background" Value="Bule" /> <Setter Property="FontFamily" Value="Arial Black" /> </Style></Page.Resources><StackPanel Margin="20,30,0,0"> <TextBlock Text="APP NAME" Foreground="{StaticResource MyBrush}" /> <TextBlock Text="page name" /> <Button Content="My Brush Example" Height="100" Background="{StaticResource MyBrush}" Style="{StaticResource MyBrushStyle}" /></StackPanel>
上面代码在StackPanel中定义了下面代码需要引用的资源,x:Key指明了定义的资源的名称,以方便其它控件引用它。在TextBlock和Button中都引用了StaticResource,即:
Foreground="{StaticResource MyBrush}" Background="{StaticResource MyBrush}"Style="{StaticResource MyBrushStyle}"
引用StaticResource的语法如下:
<object property="{StaticResource key}"
其次,引用StaticResourc中的相同属性可以实现覆盖,上例中,Button先后引用了两个StaticResources,第一个引用StaticResource MyBrush中定义其颜色为Yellow, 而下面的StaticResource MyBrushStyle却定义其颜色为Blue,优先定义的属性将对后序定义的属性实施覆盖,即最终效果是Button的颜色为黄色。此外,如果你想让APP的所有页面都可以将预先定义的资源实现引用,可以将资源定义在App.xaml文件。使用StaticResource的一大好处是:当你想改变APP的风格时,你不需要每个控件的风格,你只需将提前定义好的资源的属性加以改变,就可实现全局改变。
0 0
- C#探秘系列(五)
- C#探秘系列(一)
- C#探秘系列(二)
- C#探秘系列(三)
- C#探秘系列(四)
- C#探秘系列(六)
- C#探秘系列(二)——IsXXX 系列方法
- C#探秘系列(七):XML文件操作(一)
- C#探秘系列(一)——ToDictionary,ToLookup
- C#探秘系列(八)WPF数据绑定
- C#探秘系列(九)WPF连接Mysql数据库
- C#探秘系列(十)WPF:打开文件选择器选择文件并保存
- nginx-0.8.38源码探秘(五)
- Vista入门探秘系列
- 【探秘ES6】系列专栏
- C#3.0入门系列(五)-之Where操作
- C#3.0入门系列(五)-之Where操作
- C#基础知识梳理系列五:委托与事件(上)
- 阶乘因式分解(一)
- Android应用开发人员的10个建议
- vi常用命令
- 设计模式之简单工厂
- 黑马程序员Java基础第七章-----单例设计模式,异常
- C#探秘系列(五)
- 34. PHP 执行运算符
- MyBatis实用教程
- 【概率DP】 ZOJ 2949 Coins of Luck 期望
- 第10题:翻转句子中单词的顺序
- Google推荐的图片加载库Glide介绍
- [HNOI2004]打鼹鼠 解题报告
- 转:could not find the main class, Program will exit (说明编译器compiler版本要不高于installed JREs,JVM版本)
- [CookBook_V2 笔记]字符和字符值之间的转换[1-2]