L'interfaccia INotifyPropertyChanged è molto comune nei client Windows basati sul binding che devono reagire al cambio del valore di una proprietà. Ad esempio, quando si vuole disabilitare un'area a seguito dello stato di un checkbox, si collega la checkbox a un valore booleano e l'abilitazione dell'area al booleano stesso così quando cambia lo stato del booleano la UI si allinea.
Per fare questo si fa implementare alla classe che contiene il booleano l'interfaccia INotifyPropertyChanged e nel setter della proprietà si scatena un evento che notifica dei cambi così che l'interfaccia può ridisegnarsi.
Prima dell'avvento di C# 6 il codice da scrivere nel setter della proprietà era il seguente.
private bool _enabled;
public string Enabled
{
get { return _enabled; }
set
{
_enabled = value;
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs("Enabled"));
}
}
}Adesso invece grazie a nameof e il null-conditional operator possiamo riscrivere lo stesso codice nel seguente modo.
private bool _enabled;
public string Enabled
{
get { return _enabled; }
set
{
_enabled = value;
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(nameof(Enabled)));
}
}Se compariamo il codice nel setter della proprietà, il primo esempio ci costringe a scrivere molto codice e anche non tipizzato (la proprietà Enabled viene passata come stringa al costruttore di PropertyChangedEventArgs), mentre il secondo è molto più compatto e tipizzato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare le librerie native di .NET per decomprimere un file zip
Blue/Green Release in locale con .NET Aspire
Supporto semplificato per le left join in Entity Framework 10
Eseguire i pre-commit hook di git con dependabot
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
Blazor e Static Web Assets in .NET 10
Integrare LLM alle nostre applicazioni in .NET con MCP
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Stop alle password con Azure Managed Identity
Keynote Global Azure 2026 - ASPItalia.com
Stop Building Chatbots. Build a team
Definire il colore di una scrollbar HTML tramite CSS


