书名:WPF专业编程指南
作者:李应保
出版社:电子工业出版社
出版时间:2010-01
ISBN:9787121100116
一、XAML标记扩展
有时候我们要在XAML里引用静态或动态对象实例,或在XAML中创建带有参数的类。
这时,我们需要用到XAML扩展。XAML扩展常用来设定属性值。标记扩展本身是一系列类,其基类为MarkupExtension,这是一个抽象类。
从这个类中派生出十二个类,即:
ResourseKey、
TypeExtension、
StaticExten-sion、
BindingBase、
RelativeSourse、
ColorConvertedBitmapExtension、
Dyna-micResourceExtension、
ArrayExtension、
NullExtension、
StaticResource-Extension、
Template-BindingExtension和
ThemeDictionaryExtension。
其中ResourceKey、BindingBase等类又派生出其他的一些类。
二、分类
1、两大类
这些标记扩张可分为两大类:
- WPF标记扩展。
这类扩展包括:StaticResource、DynamicResource、Binding、RelativeSource和TemplateBinding。 - XAML本身定义的标记扩展。
这类扩展包括:x:Type、x:Static、x:null和x:Array。
2、语法
在语法上,XAML使用大括号{}来表示扩展。
- 例如,下面这句XAML:
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path
=PersonName}"/>
这里有两处使用了XAML扩展,一个是Binding,另一个是StaticResource,这种用法又称为嵌套扩展,TextBlock元素的Text属性的值为{}中的结果。
当XAML编译器看到大括号{}时,把大括号中的内容解释为XAML标记扩展。
必要时,你也可以使用自己的扩展,其方法是从MarkupExtension中派生出你自己的标记扩展类,并覆盖基类中的ProvideValue方法。