• WPF快速指导9:WPF中的属性(依赖项属性)


    WPF快速指导9:WPF中的属性(依赖项属性)

    本文摘要:

    1:什么是依赖项属性;

    2:实现依赖项属性;

    1:什么是依赖项属性

        Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能。这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。

        依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值。这些其他输入可以包括系统属性(如主题和用户首选项)、实时属性确定机制(如数据绑定和动画/演示图板)、重用模板(如资源和样式)或者通过与元素树中其他元素的父子关系来公开的值。另外,可以通过实现依赖项属性来提供独立验证、默认值、监视其他属性的更改的回调以及可以基于可能的运行时信息来强制指定属性值的系统。派生类还可以通过重写依赖项属性元数据(而不是重写现有属性的实际实现或者创建新属性)来更改现有属性的某些具体特征。

        更通俗一点的理解就是,依赖项属性用来支持样式设置、数据绑定、继承、动画和默认值。

        讨论依赖项属性时所使用的术语:

    • 依赖项属性:一个由 DependencyProperty 支持的属性。

    • 依赖项属性标识符:一个 DependencyProperty 实例,在注册依赖项属性时作为返回值获得,之后将存储为一个类成员。在与 WPF 属性系统交互的许多 API 中,此标识符用作一个参数。

    • CLR“包装”:属性的实际 get 和 set 实现。这些实现通过在 GetValueSetValue 调用中使用依赖项属性标识符来合并此标识符,从而使用 WPF 属性系统为属性提供支持。


    2:实现依赖项属性

    下面的示例定义 IsSpinning 依赖项属性,并说明 DependencyProperty 标识符与它所支持的属性之间的关系。

    public static readonly DependencyProperty IsSpinningProperty = 
        DependencyProperty.Register(
        "IsSpinning", typeof(Boolean),
    ...
        );
    public bool IsSpinning
    {
        get { return (bool)GetValue(IsSpinningProperty); }
        set { SetValue(IsSpinningProperty, value); }
    }
    NET C# 入门级 .NET C# 专业级 .NET 架构级 BS系统专业级 BS系统安全
    1.开篇及C#程序、解决方案的结构
    2.源码管理之TFS入门
    3.打老鼠初级
    ……
    21.CMS之主要功能实现
    22.进程和线程基础
    23.类型转换
    24.算法基础
    25.初级课程之剩余知识点
    1.消灭打老鼠游戏中的自定义委托
    2.垃圾回收
    3.Dispose模式
    ……
    16.异常使用指导
    17.最常用的重构指导
    18.Debug和IDE的进阶
    19.Resharper的使用
    20.ILSPY的使用
    1.Socket入门
    2.打造打老鼠游戏网络版
    3.WCF入门
    ……
    10.依赖注入
    11.万物兼可测试
    12.软件指标之覆盖率计算
    13.软件指标之代码行
    14.软件指标之圈复杂度、嵌套深度
    1.HTML
    2.WebForm原理
    3.CSS必知必会
    ……
    19.让浏览器缓存Shop
    20.Asp.net的生命周期
    21.Asp.net网站的发布以及调试晋级
    22.BS程序的本质
    23.压力测试我们的Shop
    1.Fiddler必知必会
    2.IE开发者工具必知必会
    3.跨站脚本防范
    4.权限欺骗防范
    5.参数越界防范
    6.会话劫持防范
    7.CSRF防范
    8.盗链防范
    9.静态文件的保护


     
     
    Creative Commons License本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
  • 相关阅读:
    Mysql-update limit限制更新条数
    解决 gitbook serve 报错 Error: listen EADDRINUSE: address already in use :::35729
    解决gulp-gulify报错`warnings` is not a supported option
    解决ionic在手机上拍照图片旋转的问题
    mac OSX chrome 访问HTTPS时提示您的连接不是私密连接,NET::ERR_CERT_INVALID,而且没有“继续”访问按钮
    iView Modal对话框 设置可拖动(dragable)时,一拖就消失
    nvm常用指令
    telegram for mac 登录时手机端收不到验证码
    Ionic 安卓打包或运行报错:You have not accepted the license agreements of the following SDK components
    诡镇奇谈卡牌版 AHLCG 规则简要
  • 原文地址:https://www.cnblogs.com/luminji/p/1838171.html
Copyright © 2020-2023  润新知