Technology Experience
.NET World

Essere notificati dei cambiamenti di valore di una DependencyProperty

La dependency property (d’ora in poi DP) LanguageProperty è una proprietà definita nell’oggetto FrameworkElement di WPF (assembly PresentationFramework.dll, namespace System.Windows). Oggi mi è servito implementare un meccanismo per mettermi in ascolto di tutti i cambiamenti di valore di questa proprietà nel costruttore di uno UserControl, cosa che sarebbe banale nel caso di una nostra custom dependency property (quando si crea una DP ci viene praticamente gratis il meccanismo di PropertyCallback), ma un po’ meno quando si tratta di una DP di quelle predefinite di WPF.

Ho risolto così:

private void ListenForChangingLanguage()
{
    DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor
        .FromProperty(LanguageProperty, typeof(UserControl));

    if (dpd != null)
    {
        dpd.AddValueChanged(this, delegate
        { // TODO });
    }
}

Questo meccanismo è piuttosto comodo, e lo si ottiene con poche linee di codice. All’interno del costruttore del mio UserControl chiamo il metodo qui sopra e tutto viene gratis. Chiaramente ciò che implementate all’interno del delegate è a carico vostro, io l’ho lasciato volutamente vuoto (a parte il commento, LOL). A me è servito per hostare un mio UserControl in una normalissima Window WPF, e giocando con la LanguageProperty posso essere notificato all’interno dello UserControl e reagire di conseguenza (nel mio caso cambio a run-time la lingua).

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.