博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MarkupExtension
阅读量:5955 次
发布时间:2019-06-19

本文共 1341 字,大约阅读时间需要 4 分钟。

目的

  如果要在XAML里引用静态或动态对象实例,或在XAML中创建带有参数的类。这时,我们需要用到XAML扩展。XAML扩展常用来设定属性值。使用标识扩展,告诉 XAML 处理不要像通常那样将属性值视为文本字符串,而是通过类型转换把字符串转换为静态或动态实例。

格式

        当XAML编译器看到大括号{}时,把大括号中的内容解释为XAML标记扩展。

        如:<TextBlock Text="{Binding Source={StaticResource myDataSource},Path=PersonName}"/>

  有两个标识扩展,一个是Binding标识扩展,一个是StaticResource扩展。

说明

  1、标记扩展本身是一系列类,其基类为MarkupExtension(抽象类)。

    2、从这个类中派生出十二个类,即:ResourseKey、 TypeExtension、StaticExtension、BindingBase、RelativeSourse、 ColorConvertedBitmapExtension、DynamicResourceExtension、ArrayExtension、 NullExtension、StaticResourceExtension、TemplateBindingExtension和 ThemeDictionaryExtension。其中ResourceKey、BindingBase等类又派生出其他的一些类。

  3、这些标记扩张可分为两大类:

        WPF标记扩展:StaticResource、DynamicResource(silverligh不支持)、Binding、RelativeSource和TemplateBinding。

             XAML本身定义的标记扩展:x:Type、x:Static、x:null和x:Array。

 

 

[MarkupExtensionReturnType(typeof(Thickness))]    public class ThicknessExtension : MarkupExtension    {        public double Bottom { get; set; }        public double Left { get; set; }        public double Right { get; set; }        public double Top { get; set; }        public ThicknessExtension()        {        }        public override object ProvideValue(IServiceProvider serviceProvider)        {            return new Thickness(Left, Top, Right, Bottom);        }    }
View Code
View Code

 

转载于:https://www.cnblogs.com/FaDeKongJian/p/3284450.html

你可能感兴趣的文章
设计模式-观察者模式(发布订阅模式)
查看>>
CTO应该知道的事
查看>>
js清理cookie
查看>>
jpa 实体到数据库
查看>>
GHOSTXP_SP3
查看>>
Python操作Redis和Memcached
查看>>
MySQL数据库性能优化之硬件瓶颈分析
查看>>
JAVA NIO 简介 (netty源码死磕1.1)
查看>>
转”使用UBOOT烧写根文件系统和内核的方法
查看>>
Tornado 上传文件及存储
查看>>
Android Handler机制分析
查看>>
iOS开发之控制器的创建
查看>>
我的友情链接
查看>>
一、 zedboard&ubuntu 14.04 的前期准备(定期更新)
查看>>
转为python
查看>>
git 笔记
查看>>
Bower介绍及用法(转)
查看>>
[转载] 民兵葛二蛋——第18集
查看>>
[转载] 七龙珠第一部——第021话 克林危险
查看>>
R 绘制风洞实验数据曲线
查看>>