Sobes.tech
Junior

Ի՞նչ է նշանակում INotifyPropertyChanged ինտերֆեյսը։

sobes.tech AI

Պատասխան AI-ից

INotifyPropertyChanged ինտերֆեյսը օգտագործվում է հաճախորդներին (հատկապես օգտագործողի ինտերֆեյսի տարրերին) տեղեկացնելու համար, որ հատկության արժեքը փոխվել է: Սա կարևոր մեխանիզմ է MVVM (Model-View-ViewModel) ձևանմուշի և տվյալների կապի համար UI շրջանակներում, ինչպիսիք են WPF-ը:

Երբ այն դասի հատկության արժեքը փոխվում է, որը իրականացնում է այս ինտերֆեյսը,

  1. Կոչվում է PropertyChanged իրադարձության հսկողը:
  2. Հսկողը ստանում է PropertyChangedEventArgs տիպի արգումենտներ, որոնք պարունակում են փոխված հատկության անունը:
  3. Այս իրադարձությանը գրանցված UI տարրերը կամ այլ հաճախորդները ստանում են ծանուցում և կարող են թարմացնել իրենց ցուցադրությունը նոր արժեքով:

Իմպլեմենտացիայի օրինակ:

using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Ստուգում, արդյոք արժեքը իսկապես փոխվել է
            {
                _name = value;
                OnPropertyChanged(); // Ծանուցման մեթոդը կանչել
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

.NET 6 և ավելի նոր տարբերակներում կարող եք օգտագործել [ObservableProperty] ախտանիշը CommunityToolkit.Mvvm փաթեթից՝ ավտոմատ կերպով գեներացնելու համար բոիլեռփրինտ կոդը:

using CommunityToolkit.Mvvm.ComponentModel;

public partial class MyData : ObservableObject
{
    [ObservableProperty]
    private string _name;
}