Sobes.tech
Junior

Az INotifyPropertyChanged interfész mire szolgál?

sobes.tech MI

Válasz az MI-től

Az INotifyPropertyChanged interfész arra szolgál, hogy értesítse az ügyfeleket (általában felhasználói felület elemeket), hogy egy tulajdonság értéke megváltozott. Ez egy kulcsfontosságú mechanizmus az MVVM (Model-View-ViewModel) minta és az adatkötés megvalósításához olyan UI keretrendszerekben, mint a WPF.

Amikor egy osztályban, amely ezt az interfészt megvalósítja, egy tulajdonság értéke megváltozik:

  1. Meghívódik a PropertyChanged esemény kezelője.
  2. A kezelő PropertyChangedEventArgs típusú argumentumokat kap, amelyek tartalmazzák a megváltozott tulajdonság nevét.
  3. A felhasználói felület elemei vagy más ügyfelek, akik feliratkoztak erre az eseményre, értesítést kapnak, és frissíthetik megjelenítésüket az új érték szerint.

Implementációs példa:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Ellenőrizzük, valóban megváltozott-e az érték
            {
                _name = value;
                OnPropertyChanged(); // Értesítési metódus hívása
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

.NET 6 és újabb verziókban az [ObservableProperty] attribútumot lehet használni a CommunityToolkit.Mvvm csomagból, amely automatikusan generálja a boilerplate kódot:

using CommunityToolkit.Mvvm.ComponentModel;

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