三,依赖项属性

  1. 定义依赖项属性

    public class FrameworkElement : UIElement
    {
        public static readonly DependencyProperty MarginProperty;
    
        static FrameworkElement()
        {
            FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata(new Thickness(), FrameworkPropertyMetadataOptions.None);
            MarginProperty = DependencyProperty.Register("Margin", typeof(Thickness), typeof(FrameworkElement), metadata, null);
        }
    
        public Thickness Margin
        {
            set { SetValue(MarginProperty, value); }
            get { return (Thickness)GetValue(MarginProperty); }
        }
    }

    只能为依赖对象(继承自DependencyObject的类)添加依赖项属性。它是DependencyProperty类的实例,属性信息应该始终保持可用,甚至可能需要在多个类中共享这些信息,因此,必须将DependencyProperty对象定义为与之相关联的类的静态字段。根据约定,定义依赖项属性的字段的名称为在普通属性的末尾加上单词“Property”,且使用readonly关键字进行修饰。

    DependencyProperty不能被直接实例化,因为DependencyProperty没有公有的构造函数,只能使用静态的DependencyProperty.Register()方法创建。

    注册一个依赖项属性需要经过两个步骤,首先创建一个FrameworkPropertyMetadata对象,该对象希望通过依赖项属性使用什么服务。其次通过调用DependencyProperty.Register()静态方法注册属性,在这一步中需提供以下几个要素:

    1)  属性名:在该示例中为Margin

    2)  属性使用的数据类型:在该示例中为Thickness结构

    3)  拥有该属性的类型:在该示例中为FrameworkElement类

    4)  一个具有附加属性设置的 FrameworkPropertyMetadata对象,该要素是可选的

    5)  一个用于验证属性的回调函数,该要素是可选的

    FrameworkPropertyMetadata类的所有属性的说明如下:

三,依赖项属性

时间: 2024-11-10 15:18:51

三,依赖项属性的相关文章

WPF的依赖项属性

WPF的依赖项属性 属性与事件是.NET抽象模型的核心部分.WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制,还添加了附加功能,如属性变更通知以及强制回调.属性值继承(在逻辑树中向下传播默认属性值的能力)以及属性有效性验证等.同时,依赖项属性也是WPF许多重要功能的基础,包括动画.数据绑定以及样式. 依赖项属性的使用基础 使用依赖项属性包括三个部分,定义依赖项属性:注册依赖项属性以及添加属性包装器. 定义依赖项属性,使

WPF学习系列之二 (依赖项属性)

依赖属性;(dependency property)  它是专门针对WPF创建的,但是WPF库中的依赖项属性都使用普通的.NET属性过程进行了包装.从而可能通过常规的方式使用它们,即使使用他们的代码不理解WPF依赖项属性系统也是如此,使用旧技术包装新技术看起来有些奇怪,但这正是WPF能够改变基础组成部分,而不会扰乱.NET领域中其他部分的原因.三步:一:定义依赖项属性.public static readonly DependencyProperty MarginProperty;二:.在静态构

什么是依赖项属性?(在练习使用StoryBoard故事板时,遇到的问题)

概述: Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能.这些服务通常统称为 WPF 属性系统.由 WPF 属性系统支持的属性称为依赖项属性. 依赖项属性提供用来扩展属性功能的功能, 最常用的莫过于"数据绑定"功能,依赖项属性可以通过数据绑定来引用值.数据绑定通过特定的标记扩展语法(在 XAML 中)或 Binding 对象(在代码中)来工作.使用数据绑定,最终属性值的确定将延迟到运行时

【WPF学习】第十一章 理解依赖项属性

依赖项属性是标准.NET属性的全新实现——具有大量新增价值.在WPF的核心特性(如动画.数据绑定以及样式)中需要嵌入依赖项属性.WPF元素提供的大多数属性都是依赖项属性.到目前位置所见到的所有示例都用到了依赖项属性,但你可能还没有意识到这一点.这是因为依赖项属性的用法和普通属性的是相同的. 然而,依赖项属性并非普通属性.可能乐意认为依赖项属性是添加了一套WPF功能的常规属性(采用典型的.NET方式进行定义).从概念上讲,依赖项属性确实以这种方式工作,但它们的背后的实现方式并非如此.原因十分简单:

对WPF依赖项属性的理解

属性和事件是.NET抽象模型的核心部分, 而WPF中则用更高级的依赖项属性(Dependency Property)代替了原来.NET中的属性.依赖项属性主要应用于自定义元素中,用于为自定义元素注入自定义的属性. 以下是定义和注册依赖项属性的方法: //声明并注册依赖项属性 FoodProperty public static DependencyProperty FoodProperty =      DependencyProperty.Register("Food", typeo

WPF编程宝典之依赖项属性(八)

依赖项属性是专门针对WPF创建的,但WPF库中的依赖项属性都使用普通的.NET属性过程(property procedure)进行了封装. 1.定义依赖项属性 注:只能为依赖对象(继承自DependencyObject的类)添加依赖项属性.幸运的是,WPF基础结构的关键部分中的大部分都间接继承自DependencyObject类,最明显的例子就是元素. 依赖项属性需要在多个类之间共享信息,所以必须将DependencyProperty对象定义为与其相关联的类的静态字段.并且按照约定,依赖项属性的

WPF学习之依赖项属性

依赖项属性-依赖属性 Register(String, Type, Type) 使用指定的属性名称.属性类型和属性所在对象的类型.Register(String, Type, Type, PropertyMetadata) 使用指定的属性名称.属性类型.属性所在对象的类型和属性元数据注册依赖项属性.Register(String, Type, Type, PropertyMetadata, ValidateValueCallback) 使用指定的属性名称.属性类型.属性所在对象的类型.属性元数据

学习WPF——初识依赖项属性

入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果: 说明 首先是定义表示属性的对象,一个依赖项属性的对象必然是DependencyProperty的实例 这个实例必须始终保持可用,所以这里定义为静态字段 根据约定,依赖项属性的字段名称使用Property结尾,上面例子使用的是NameProperty 依赖项属性实例的创建工作必须在使用之前完成,所以要么在定义的时候即

WPF 依赖项属性

WPF中的依赖项属性 “依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值”,只有定义属性为依赖项属性,这个属性才支持样式设置,数据绑定,继承,动画和默认值. 属性对应的字段必需是公有,静态,只读的,类型为DependencyProperty.即public static readonly DependencyProperty 字段名,同时字段的命名也有规范,属性名+Property,字段在定义时,通过DependencyProperty.Register来实注册属性(只有注册了,才能