FrameworkElement.DataContextChanged Event

Si verifica quando il valore della proprietà FrameworkElement.DataContext viene modificato.

Sintassi


public event TypedEventHandler<FrameworkElement, DataContextChangedEventArgs> DataContextChanged

Informazioni sull'evento

Delegato TypedEventHandler<FrameworkElement, DataContextChangedEventArgs>

Note

La proprietà FrameworkElement.DataContext ha un comportamento predefinito in base al quale il valore eredita tutti gli elementi figlio FrameworkElement di una classe FrameworkElement in cui viene impostato un valore DataContext. Questo comportamento consente a un set di elementi correlati di utilizzare lo stesso contesto per l'associazione a proprietà di origine differenti; ciò risulta particolarmente utile per i modelli di elemento, modelli di dati e altri scenari di associazione dati. Poiché DataContext è un oggetto che eredita, ogni oggetto FrameworkElement ha la possibilità di generare un altro evento DataContextChanged che è originato dall'elemento che eredita, non dall'elemento padre, una volta che da parte dell'elemento viene rilevato che il relativo valore DataContext ereditato è stato modificato. Se non si desidera ottenere questo comportamento, è necessario gestire l'evento DataContextChanged sull'origine padre, dove l'evento verrà generato prima. Come parte della logica di gestione, impostare il valore della proprietà Handled nei dati evento DataContextChangedEventArgs su true. Tale azione impedirà l'indirizzamento a elementi figlio da parte dell'evento.

Nota  L'evento DataContextChanged presenta un comportamento di routing, ma non è un evento indirizzato effettivo (non dispone di un identificatore RoutedEvent). Inoltre, indirizza dal padre al figlio mentre gli eventi indirizzati effettivi indirizzano dal figlio al padre. Se si ha dimestichezza con Windows Presentation Foundation (WPF), DataContextChanged può essere considerato un evento indirizzato di tunneling dalle definizioni di routing di eventi WPF.

L'evento DataContextChanged è utile per scenari in cui tramite la logica di controllo o un'altra logica basata sul codice si desidera ricevere una notifica in caso di modifica del contesto dati per le associazioni, che spesso indica la modifica dei valori associati a dati Può risultare utile come trigger per l'esecuzione del codice che effettua modifiche guidate dal contesto e quindi il nuovo contesto può essere utilizzato dalle associazioni esistenti per ricalcolare i valori. È inoltre utile nei casi in cui non si desidera un'associazione dichiarata preesistente nei modelli di dati, ma è necessaria una notifica delle modifiche. In questo scenario è possibile gestire DataContextChanged per rilevare le modifiche al contesto dati e apportare modifiche dirette alle altre proprietà nel codice in risposta, come fa un'associazione dichiarata in XAML in modo dinamico tramite il motore di associazione dati. Ad esempio, è possibile disporre di un controllo personalizzato destinato principalmente all'utilizzo nei modelli di dati e si desidera che il controllo possa eseguire operazioni di associazione senza dichiarazioni esplicite di Binding nel codice XAML dell'interfaccia utente dell'applicazione o nel modello di dati.

Comportamento di Windows 8

In Windows 8 si verificava un problema relativo al mantenimento della traccia di più listener per questo evento. Se si dispone di più listener/gestori per l'evento, tentare di rimuovere uno di essi comporterebbe la rimozione di tutti. Il problema è stato corretto in Windows 8.1; la rimozione dei gestori eventi rimuove correttamente solo un listener. La maggior parte del codice non necessiterà di modifiche o di controlli del comportamento perché la presenza di più listener costituisce uno scenario raro.

Le applicazioni compilate per Windows 8 ma in esecuzione in Windows 8.1 continuano a utilizzare il comportamento di Windows 8.

Requisiti

Client supportato minimo

Windows 8.1

Server supportato minimo

Windows Server 2012 R2

Spazio dei nomi

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadati

Windows.winmd

Vedere anche

FrameworkElement
DataContext
DataContextChangedEventArgs
Cenni preliminari sull'associazione dati

 

 

Mostra:
© 2014 Microsoft