• 附加属性


       这节讲一下WPF中的附加属性。

    【什么是附加属性】

        附加属性我们早就使用过,常见的用于控件定位的Grid.Row,Grid.Column就是附加属性,那这个东西具体是什么意思呢?请设想这样的情景:一个学生,他在社团可以是社长,他在班内可以是班长,在赛场又可以是运动员,这些特定的属性,并不是每个学生都具有的,只有学生参与了或者在某个环境中,才具有这样的属性。那我们在定义学生类时,就不能把这些属性定义进去,为了解决这种在某些环境中才具有特定属性的情况,WPF引入了附加属性,附加属性就是一个对象可以被它外部的环境附加某些属性,而对象本身实际上不具有这样的属性。

    【从代码中看附加属性】

        附加属性实际上就是个依赖属性,大环境的依赖属性,依赖在其内部的对象上,反过来说就是内部属性被大环境附加上了一个属性,下面来看如何声明一个附加属性:

        声明附加属性跟声明依赖属性大同小异,他同样遵循xxxProperty这样的命名规则,使用DependencyProperty.RegisterAttached方法获取一个实例,名称虽不同,但参数跟依赖属性的Register方法是一样的。

        跟依赖属性包装器类似的,附加属性有一对Get,Set方法作为“包装器”,并且从参数上我们可以看到,附加属性只能附加到依赖对象上。

        为此,我需要再声明一个类继承于DependencyObject:

        这个类本身是个空的,下面看一下如何将GameClub的Name属性附加到Student上:

        输出结果为:

      至此,我们可以理解,为什么我们将Grid内部的控件赋上Row和Column值,它就可以将控件渲染到对应的格子中,是因为Grid读取到每个控件的附加属性值,从而知道要把控件放在哪。    

  • 相关阅读:
    如何打日志才能方便排查问题?
    为什么 HashMap 并发时会引起死循环?
    Spring 为什么会有 FactoryBean?
    常用 Git 使用技巧,收藏了~
    Gin中context的使用
    Gin的路由算法
    k8s中的网络通信总结
    k8s架构
    Golang中的值拷贝与引用拷贝
    golang知识要点总结
  • 原文地址:https://www.cnblogs.com/charlesmvp/p/15177676.html
Copyright © 2020-2023  润新知