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:
- O manipulador do evento
PropertyChangedé invocado. - O manipulador recebe argumentos do tipo
PropertyChangedEventArgs, que contêm o nome da propriedade alterada. - 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;
}