Sobes.tech
Junior

¿Para qué se utiliza la interfaz INotifyPropertyChanged?

sobes.tech AI

Respuesta de la IA

La interfaz INotifyPropertyChanged se utiliza para notificar a los clientes (generalmente elementos de la interfaz de usuario) que el valor de una propiedad ha cambiado. Este es un mecanismo clave para implementar el patrón MVVM (Model-View-ViewModel) y el enlace de datos en frameworks de UI como WPF.

Cuando el valor de una propiedad en una clase que implementa esta interfaz cambia:

  1. Se invoca el manejador del evento PropertyChanged.
  2. El manejador recibe argumentos de tipo PropertyChangedEventArgs, que contienen el nombre de la propiedad que cambió.
  3. Los elementos de UI u otros clientes suscritos a este evento reciben la notificación y pueden actualizar su visualización de acuerdo con el nuevo valor.

Ejemplo de implementación:

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 si el valor realmente cambió
            {
                _name = value;
                OnPropertyChanged(); // Llama al método de notificación
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

En .NET 6 y versiones superiores, se puede usar el atributo [ObservableProperty] del paquete CommunityToolkit.Mvvm para generar código boilerplate:

using CommunityToolkit.Mvvm.ComponentModel;

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