INotifyPropertyChanged PropertyChangedEventArgs獲取變動屬性

INotifyPropertyChanged:html

該接口包含一個事件, 針對屬性發生變動時, 執行該事件發生。函數

    //
    // 摘要:
    //  通知客戶端屬性值已更改。
    public interface INotifyPropertyChanged
    {
        //
        // 摘要:
        //     在屬性值更改時發生。
        event PropertyChangedEventHandler PropertyChanged;
    }

接下來, 用一個簡單的示例說明其簡單使用方法(大部分經常使用的作法演示):this

1.定義一個ViewModelBase 繼承INotifyPropertyChanged 接口, 添加一個虛函數用於繼承子類的屬性進行更改通知spa

2.MainViewModel中兩個屬性, Code,Name 進行了Set更改時候的調用通知,code

public class ViewModelBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }


    public class MainViewModel : ViewModelBase
    {
        private string name;
        private string code;

        public string Name
        {
            get { return name; }
            set { name = value; OnPropertyChanged("Name"); }
        }

        public string Code
        {
            get { return code; }
            set { code = value; OnPropertyChanged("Code"); }
        }
    }

每一個屬性調用OnPropertyChanged的時候, 都須要傳一個本身的屬性名, 這樣不少餘htm

改造:blog

CallerMemberName繼承

 該類繼承與 Attribute, 不難看出, 該類屬於定義在方法和屬性上的一種特效類, 實現該特性容許獲取方法調用方的方法或屬性名稱接口

//
    // 摘要:
    //     容許獲取方法調用方的方法或屬性名稱。
    [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    public sealed class CallerMemberNameAttribute : Attribute
    {
        //
        // 摘要:
        //     初始化 System.Runtime.CompilerServices.CallerMemberNameAttribute 類的新實例。
        public CallerMemberNameAttribute();
    }

 

 

源文:http://www.javashuo.com/article/p-pbgghphg-z.html事件

相關文章
相關標籤/搜索