• WPF笔记之属性和依赖属性


    属性

            新来的MM埋头学习C#,有一天跑来问我:“师兄,什么是属性?”我对她说:“学姐,我也是新来的。”

        记得MSDN的文档里介绍说:C#的类里有Property和Attribute,对于我这个英语一般般的人是一个考验,Property和Attribute不是同义词吗?嗯,是的,谷歌的翻译也是一样的,这就造成了理解的困难,下面介绍一下到底什么是Property,什么事Attribute。

        经过我不懈的理解,不断的理解,不停的理解,我可以很明确的告诉你,Property就是Attribute,不信的话我们来看一段代码(代码一):

    using System;
    
    class PropertyAndAttribute
    {
            private string name;
            private int age;
    
            public string getName() {
                return name;
            }
            public void setName(string name) {
                this.name = name;
            }
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
    }
        上面这段代码声明了两个attribute,也就是字段,这个在
    java里也可以这么定义,不过C#为我们提供了另一种更简洁的书写
    方式,下面代码(代码二):
    using System;
    
    class PropertyAndAttribute
    {
         private string name;
         private int age;
         public string Name
         {
             get;
             set;
         }
         public int Age
         {
             get;
             set;
         }
    }
    
    这样是不是就很简洁了,如果你感觉还是不爽的话,C#还有一种写
    法,见下面代码(代码三):
    class PropertyAndAttribute {
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
    }
    这样的代码是不是很简单,这就是C#里的属性声明方式,这种声明
    表面上看好像没有定义字段,但是其实编译器还是为我们的代码自
    动生成了一个匿名的备份字段,这点可以通过反编译生成的代码看
    出来,由此可见,C#里的属性其实是字段的变种,这一点对于我们
    理解依赖属性至关重要。

    依赖属性

            依赖属性,我们首先要明确一个概念,依赖属性依然是一个属性,也就是说依赖属性依然是一个字段,可是同样都是字段,为什么它会叫做依赖属性呢?它肯定有它的特殊之处,下面我就我今天下午的理解给大家解释一下,首先我们看一段声明依赖属性的代码(代码四):

    public partial class MainWindow : Window
        {
            private static DependencyProperty myProperty;
    
            public MainWindow()
            {
                InitializeComponent();
                myProperty = DependencyProperty.Register("CustomProperty",//依赖属性的名称
                    typeof(string),//依赖属性的类型
                    typeof(MainWindow),//依赖属性的所有者
                    new PropertyMetadata("属性默认值",callBackFunction));//依赖属性值发生改变时触发的函数
            }
            //依赖属性值改变的触发函数
            public void callBackFunction(DependencyObject obj, DependencyPropertyChangedEventArgs args)
            {
                MessageBox.Show(this.GetValue(myProperty).ToString());
            }
        }
  • 相关阅读:
    51nod 1134 最长递增子序列
    51nod 1135 原根
    51nod 1136 欧拉函数
    51nod 1137 矩阵乘法
    51nod 1174 区间中最大的数
    51nod 1079 中国剩余定理
    51nod 1181 质数中的质数(质数筛法)
    伪共享(False Sharing)和缓存行(Cache Line)
    mybatis 批量 操作数据
    java开发中beancopy比较
  • 原文地址:https://www.cnblogs.com/alephsoul/p/1981962.html
Copyright © 2020-2023  润新知