zoukankan      html  css  js  c++  java
  • MarkupExtension

    —目的

      如果要在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
     <Button Margin="{ext:Thickness Left=10,Bottom=10,Right=10,Top=10}" Content="Hello" />
    View Code
  • 相关阅读:
    Java实现 蓝桥杯 生命游戏
    Java实现 蓝桥杯 生命游戏
    Java实现UVA10131越大越聪明(蓝桥杯每周一题)
    Linux 静态库&动态库调用
    linux下c++开发环境安装(eclipse+cdt)
    怎样在Windows和Linux下写相同的代码
    教会你如何编写makefile文件
    Linux编译多个不同目录下的文件以及静态库、动态库的使用
    Fedora 17 下安装codeblocks
    Fedora 下安装codeblocks
  • 原文地址:https://www.cnblogs.com/FaDeKongJian/p/3284450.html
Copyright © 2011-2022 走看看