Share via


FrameworkElement.DataContextChanged Evento

Definizione

Si verifica quando il valore della proprietà FrameworkElement.DataContext cambia.

// Register
event_token DataContextChanged(TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;

// Revoke with event_token
void DataContextChanged(event_token const* cookie) const;

// Revoke with event_revoker
FrameworkElement::DataContextChanged_revoker DataContextChanged(auto_revoke_t, TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;
public event TypedEventHandler<FrameworkElement,DataContextChangedEventArgs> DataContextChanged;
function onDataContextChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("datacontextchanged", onDataContextChanged);
frameworkElement.removeEventListener("datacontextchanged", onDataContextChanged);
- or -
frameworkElement.ondatacontextchanged = onDataContextChanged;
Public Custom Event DataContextChanged As TypedEventHandler(Of FrameworkElement, DataContextChangedEventArgs) 
<frameworkElement DataContextChanged="eventhandler"/>

Tipo evento

Commenti

La proprietà FrameworkElement.DataContext ha un comportamento predefinito in cui il relativo valore eredita in tutti gli elementi figlio FrameworkElement di un FrameworkElement in cui è impostato un valore DataContext . Questo comportamento consente a un set di elementi correlati di usare lo stesso contesto per associare a proprietà di origine diverse, particolarmente utili per i modelli di elementi, i modelli di dati e altri scenari di data binding. Poiché DataContext eredita, è possibile che ogni FrameworkElement usi il valore ereditato per generare un altro DataContextChanged evento che viene generato dall'elemento eredita, non l'elemento padre, una volta che l'elemento ha rilevato che il valore DataContext ereditato è stato modificato. Se non si vuole questo comportamento, è necessario gestire l'evento DataContextChanged nell'origine padre, in cui l'evento verrà generato per primo. Come parte della logica del gestore, impostare il valore della proprietà Handled nei dati dell'evento DataContextChangedEventArgs su true. Tale azione impedirà il routing dell'evento agli elementi figlio.

Nota

DataContextChanged ha il comportamento di routing, ma non è un vero evento indirizzato (non ha un identificatore RoutedEvent ). Instrada anche da padre a figlio mentre gli eventi indirizzati true vengono indirizzati da figlio a padre. Se si ha familiarità con Windows Presentation Foundation (WPF), DataContextChanged potrebbe essere considerato un evento di tunneling instradato dalle definizioni di routing degli eventi Windows Presentation Foundation (WPF).

DataContextChanged è utile per gli scenari in cui la logica di controllo o un'altra logica basata su codice vuole notificare che il contesto dei dati per le associazioni è cambiato, che spesso significa che i valori associati ai dati cambieranno. Questo può essere utile come trigger per eseguire codice che apporta modifiche basate sul contesto e quindi il nuovo contesto può essere usato da associazioni esistenti per ricalcolare i valori. È utile anche per i casi in cui non si vuole un binding dichiarato preesistente nei modelli di dati, ma è necessaria una notifica per le modifiche. In questo scenario è possibile gestire DataContextChanged per rilevare le modifiche al contesto dei dati e apportare modifiche dirette ad altre proprietà nel codice in risposta, proprio come un'associazione dichiarata XAML esegue dinamicamente tramite il motore di associazione dati. Ad esempio, potrebbe essere disponibile un controllo personalizzato che è principalmente usato all'interno di modelli di dati e si vuole che il controllo possa eseguire operazioni di binding senza dichiarazioni esplicite Binding nell'interfaccia utente dell'app XAML o nel modello di dati.

Si applica a

Vedi anche