Condividi tramite


FrameworkElement.DataContextChanged Evento

Definizione

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

// 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 base al quale il relativo valore eredita a 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 l'associazione a proprietà di origine diverse, particolarmente utili per modelli di elementi, modelli di dati e altri scenari di data binding. Poiché DataContext eredita, esiste un potenziale per ogni FrameworkElement che usa il valore ereditato per generare un altro evento DataContextChanged originato dall'elemento che eredita, non dall'elemento padre, dopo che l'elemento rileva 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. Questa azione impedirà al routing dell'evento agli elementi figlio.

Nota

DataContextChanged ha un comportamento di routing, ma non è un vero evento indirizzato (non ha un identificatore RoutedEvent ). Viene inoltre instradato 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 può essere considerato un evento indirizzato tramite tunneling 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, il che spesso significa che i valori associati a dati cambieranno. Può essere utile come trigger per eseguire codice che apporta modifiche basate sul contesto e quindi il nuovo contesto può essere usato dalle associazioni esistenti per ricalcolare i valori. È utile anche per i casi in cui non si vuole un'associazione dichiarata preesistente nei modelli di dati, ma è necessaria una notifica per le modifiche. In questo scenario puoi gestire DataContextChanged per rilevare le modifiche apportate al contesto dati e apportare modifiche dirette ad altre proprietà nel codice in risposta, proprio come un'associazione dichiarata da XAML viene eseguita in modo dinamico tramite il motore di data binding. Ad esempio, potresti avere un controllo personalizzato destinato principalmente all'uso all'interno dei modelli di dati e vuoi che il controllo sia in grado di eseguire operazioni di associazione senza dichiarazioni di binding esplicite nel codice XAML dell'interfaccia utente dell'app o nel modello di dati.

Si applica a

Vedi anche