Sobes.tech
Junior

Para que é que serve a interface INotifyPropertyChanged?

sobes.tech IA

Resposta da IA

A interface INotifyPropertyChanged é usada para notificar os clientes (normalmente elementos da interface de utilizador) de que o valor de uma propriedade mudou. Este é um mecanismo chave para implementar o padrão MVVM (Model-View-ViewModel) e ligação de dados em frameworks de UI como o WPF.

Quando o valor de uma propriedade numa classe que implementa esta interface muda:

  1. O manipulador do evento PropertyChanged é invocado.
  2. O manipulador recebe argumentos do tipo PropertyChangedEventArgs, que contêm o nome da propriedade alterada.
  3. Elementos de UI ou outros clientes subscritos a este evento recebem a notificação e podem atualizar a sua visualização de acordo com o novo valor.

Exemplo de implementação:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Verifica se o valor mudou realmente
            {
                _name = value;
                OnPropertyChanged(); // Chama o método de notificação
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

No .NET 6 e versões superiores, pode usar o atributo [ObservableProperty] do pacote CommunityToolkit.Mvvm para gerar código boilerplate:

using CommunityToolkit.Mvvm.ComponentModel;

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