在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些根本的观点,首先固然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用措施符号语言),是专门用于WPF技术中的UI设计语言,通过使用XAML语言,我们能够快速设计软件界面,同时能够通过绑定这种机制能够很好地实现界面和实现逻辑之间的解耦,这个就是MVVM模式的核心了,那么今天我们介绍的MarkupExtension和XAML之间又有哪些的关系呢?
Markup Extension,顾名思义,就是对xaml的扩展,在XAML中,规定如果属性以{}开始及结束,就是Markup Extension,Markup Extension指的是担任于MarkupExtension的类,首先我们通过一张图来看看WPF中有哪些已知的Markup Extension。
看了这张图片之后是不是对这个MarkupExtension有一个通例的认识,你会发明这个在WPF中实在是太重要了,通过这个MarkupExtension我们能够实现绑定、资源等等一系列的操纵,在介绍完这个之后,,我们来看看,这个抽象的MarkupExtension基类到底是什么?里面包罗些什么?怎么去使用它?
#region 措施集 WindowsBase.dll, v3.0.0.0 // C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll #endregion using System; namespace System.Windows.Markup { // 摘要: // 为所有 XAML 符号扩展供给基类。 public abstract class MarkupExtension { // 摘要: // 初始化从 System.Windows.Markup.MarkupExtension 派生的类的新实例。 protected MarkupExtension(); // 摘要: // 在派生类中实现时,返回一个东西,此东西被设置为此符号扩展的方针属性的值。 // // 参数: // serviceProvider: // 可以为符号扩展供给处事的东西。 // // 返回功效: // 将在扩展应用到的属性上设置的东西值。 public abstract object ProvideValue(IServiceProvider serviceProvider); } }
其实看看里面的内容,仅仅供给了一个抽象的要领ProvideValue,我们在担任这个抽象类后需要去重载这个抽象要领,然后来实现本身的逻辑。
在对整个MarkupExtension介绍之后,我们可以对它进行一个总结,那就是:
XAML符号扩展语法格局:
<元素东西 东西属性=”{扩展符号 扩展符号属性 = 扩展属性值}” />
这个是不是很熟悉,如果还是不够直不雅观的话,我们可以通过代码来进行说明:
<TextBox Text=”{Binding Path=ProductName}”/>