Sobes.tech
Junior

K čemu slouží rozhraní INotifyPropertyChanged?

sobes.tech AI

Odpověď od AI

Rozhraní INotifyPropertyChanged se používá k oznámení klientům (obvykle prvkům uživatelského rozhraní), že hodnota vlastnosti se změnila. Jedná se o klíčový mechanismus pro implementaci vzoru MVVM (Model-View-ViewModel) a datové vazby ve frameworkech UI, jako je WPF.

Když se změní hodnota vlastnosti ve třídě, která toto rozhraní implementuje:

  1. Je volen obslužný program události PropertyChanged.
  2. Obslužný program obdrží argumenty typu PropertyChangedEventArgs, které obsahují název změněné vlastnosti.
  3. UI prvky nebo jiní klienti přihlášení k této události obdrží oznámení a mohou aktualizovat svůj vzhled podle nové hodnoty.

Příklad implementace:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Kontrola, zda se hodnota skutečně změnila
            {
                _name = value;
                OnPropertyChanged(); // Volání metody oznámení
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

V .NET 6 a novějších verzích lze použít atribut [ObservableProperty] z balíčku CommunityToolkit.Mvvm k automatickému generování boilerplate kódu:

using CommunityToolkit.Mvvm.ComponentModel;

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