zoukankan      html  css  js  c++  java
  • 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());
            }
        }
  • 相关阅读:
    BZOJ 2069 POI2004 ZAW 堆优化Dijkstra
    浏览器大小屏适配的方法
    编译性语言&解释性语言
    ubuntu 查看网卡 数据包处理 速度
    使用Newtonsoft JsonConvert反序列化Json数据到DataTable
    easyUI datagrid view扩展
    easyUI layout 中使用tabs+iframe解决请求两次方法
    oracle自定义判断数据是否为数值函数
    easyUI datagrid editor扩展dialog
    JavaScript格式化日期
  • 原文地址:https://www.cnblogs.com/alephsoul/p/1981962.html
Copyright © 2011-2022 走看看