欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#接口INotifyPropertyChanged使用方法

 更新時(shí)間:2022年01月26日 11:11:26   作者:痕跡g  
這篇文章介紹了C#接口INotifyPropertyChanged的使用方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

INotifyPropertyChanged:

該接口包含一個(gè)事件, 針對(duì)屬性發(fā)生變更時(shí), 執(zhí)行該事件發(fā)生。

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

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

1.定義一個(gè)ViewModelBase 繼承INotifyPropertyChanged 接口, 添加一個(gè)虛函數(shù)用于繼承子類的屬性進(jìn)行更改通知

2.MainViewModel中兩個(gè)屬性, Code,Name 進(jìn)行了Set更改時(shí)候的調(diào)用通知,

     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"); }
        }
    }

正如上面的代碼, 應(yīng)該注意到了, 每個(gè)屬性調(diào)用OnPropertyChanged的時(shí)候, 都需要傳一個(gè)自己的屬性名, 這樣是不是很多余?對(duì), 很多余。

改造

看到有些文章給基類的參數(shù)修改為表達(dá)式樹, 這樣實(shí)現(xiàn)的時(shí)候,傳遞一個(gè)Lambda表達(dá)式, 我覺得這是不治標(biāo)不治本嗎?如下:

說明: 原來直接傳遞一個(gè)固定的string類型實(shí)參, 不說換成lambda的性能問題, 同樣帶來的問題你還是固定的需要去書寫這個(gè)參數(shù)。 不建議這么做!

CallerMemberName

該類繼承與 Attribute, 不難看出, 該類屬于定義在方法和屬性上的一種特效類, 實(shí)現(xiàn)該特性允許獲取方法調(diào)用方的方法或?qū)傩悦Q

    //
    // 摘要:
    //     允許獲取方法調(diào)用方的方法或?qū)傩悦Q。
    [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    public sealed class CallerMemberNameAttribute : Attribute
    {
        //
        // 摘要:
        //     初始化 System.Runtime.CompilerServices.CallerMemberNameAttribute 類的新實(shí)例。
        public CallerMemberNameAttribute();
    }

改造ViewModelBase:

改造之后, 是不是發(fā)現(xiàn)明顯區(qū)別:

不用傳遞參數(shù), 不用書寫lambda表達(dá)式, 也不用擔(dān)心其傳遞的參數(shù)安全, 直接根據(jù)讀取屬性名!

到此這篇關(guān)于C#接口INotifyPropertyChanged使用方法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# 8.0中的范圍類型(Range Type)示例詳解

    C# 8.0中的范圍類型(Range Type)示例詳解

    這篇文章主要給大家介紹了關(guān)于C# 8.0中范圍類型(Range Type)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • C#關(guān)鍵字之覆寫overwrite介紹

    C#關(guān)鍵字之覆寫overwrite介紹

    這篇文章介紹了C#關(guān)鍵字之覆寫overwrite,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#算法設(shè)計(jì)之關(guān)于1000瓶水的問題

    C#算法設(shè)計(jì)之關(guān)于1000瓶水的問題

    這篇文章主要介紹了C#算法設(shè)計(jì)之關(guān)于1000瓶水的問題,是一個(gè)比較經(jīng)典的算法問題,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • c#中值類型和引用類型的基礎(chǔ)教程

    c#中值類型和引用類型的基礎(chǔ)教程

    這篇文章主要給大家介紹了關(guān)于c#中值類型和引用類型的基礎(chǔ)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 在WPF中實(shí)現(xiàn)全局快捷鍵功能

    在WPF中實(shí)現(xiàn)全局快捷鍵功能

    這篇文章介紹了在WPF中實(shí)現(xiàn)全局快捷鍵功能的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 使用C#實(shí)現(xiàn)讀取系統(tǒng)配置文件的代碼實(shí)例講解

    使用C#實(shí)現(xiàn)讀取系統(tǒng)配置文件的代碼實(shí)例講解

    這篇文章主要介紹了使用C#實(shí)現(xiàn)讀取系統(tǒng)配置文件的代碼實(shí)例,使用到了ConfigurationManager類,需要的朋友可以參考下
    2015-12-12
  • C#?獲取本機(jī)IP地址(IPv4和IPv6)

    C#?獲取本機(jī)IP地址(IPv4和IPv6)

    本文主要介紹了C#?獲取本機(jī)IP地址(IPv4和IPv6),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C#調(diào)用Java類的實(shí)現(xiàn)方法

    C#調(diào)用Java類的實(shí)現(xiàn)方法

    以下是對(duì)使用C#調(diào)用Java類的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下
    2013-09-09
  • 提權(quán)函數(shù)之RtlAdjustPrivilege()使用說明

    提權(quán)函數(shù)之RtlAdjustPrivilege()使用說明

    RtlAdjustPrivilege() 這玩意是在 NTDLL.DLL 里的一個(gè)不為人知的函數(shù),MS沒有公開,原因就是這玩意實(shí)在是太NB了,以至于不需要任何其他函數(shù)的幫助,僅憑這一個(gè)函數(shù)就可以獲得進(jìn)程ACL的任意權(quán)限!
    2011-06-06
  • C#網(wǎng)絡(luò)適配器簡單操作

    C#網(wǎng)絡(luò)適配器簡單操作

    這篇文章主要介紹了C#網(wǎng)絡(luò)適配器簡單操作,提供多種相關(guān)的輔助方法類,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論