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
Creare agenti facilmente con Azure AI Agent Service
Utilizzo delle stepped value functions nel CSS
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Testare il failover sulle region in Azure Storage
Recuperare gli audit log in Azure DevOps
Definire il colore di una scrollbar HTML tramite CSS
Arricchire l'interfaccia di .NET Aspire
Definire il metodo di rilascio in .NET Aspire
Creare comandi nella dashboard .NET Aspire
Ridurre il reflow cambiando il CSS
Gestione CSS in Blazor con .NET 9
Recuperare le subissue e il loro stato di completamento in GitHub
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Inserire le news di Punto Informatico nel proprio sito


