zoukankan      html  css  js  c++  java
  • WPF知识点全攻略08- 依赖属性

    依赖属性是WPF不得不提,不得不会系列又一

    先来看一下,自定义依赖属性的写法

    public static readonly DependencyProperty IconProperty = 
        DependencyProperty.Register("Icon", typeof(ImageSource), typeof(CustomButton), new PropertyMetadata(null));
    public ImageSource Icon
    {
        get { return (ImageSource)GetValue(IconProperty); }
        set { SetValue(IconProperty, value); }
    }

    在定义依赖属性时,没有使用典型的get { return a; } set { a = value }的结构,而是引入了GetValue和SetValue,这个两个方法来自于 DependencyObject类,DependencyProperty类型的参数定义为了静态只读,他只作为标识符。

    1、对比.NET普通属性,依赖属性少了私有成员,多了依赖项属性标识符。

    2、.NET普通属性的值是从类中的私有字段中直接读取,DependencyProperty的值是调用GetValue()动态解析的。

    3、依赖属性的值,无私有对象存储,是存在于DependencyObject提供的键和值的字典中。

    依赖属性的优点:

    减少内存占用

    当您认为UI控件的90%以上的属性通常保持其初始值时,为每个属性存储字段是一个巨大的耗散。依赖项属性仅通过在实例中存储已修改的属性来解决这些问题。默认值在依赖项属性中存储一次。

    值继承

    访问依赖项属性时,将使用值解析策略解析该值。如果未设置本地值,则依赖项属性将向上导航逻辑树,直到找到值。当您在根元素上设置FontSize时,它将应用于下面的所有文本块,除非您覆盖该值。

    更改通知

    依赖项属性具有内置的更改通知机制。通过在属性元数据中注册回调,您可以在更改属性的值时收到通知。这也被数据绑定使用。

    参考:https://www.wpftutorial.net/DependencyProperties.html

  • 相关阅读:
    cpu capacity、task_util、cpu_util是如何计算的?
    QTI EAS学习之find_energy_efficient_cpu
    Linux内核进程调度overview(1)
    Ondemand和Interactive gonernor工作逻辑简述
    利用init进程监控底层节点的方法架构
    Sched_Boost小结
    SchedTune
    Cpusets学习
    搭建SpringCloud微服务框架:三、读取Nacos的配置信息
    搭建SpringCloud微服务框架:一、结构和各个组件
  • 原文地址:https://www.cnblogs.com/kuangxiangnice/p/11067279.html
Copyright © 2011-2022 走看看