FrameworkElement.DataContextChanged Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn sich der Wert der FrameworkElement.DataContext-Eigenschaft ändert.
// 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"/>
Ereignistyp
Hinweise
Die FrameworkElement.DataContext-Eigenschaft verfügt über ein integriertes Verhalten, bei dem ihr Wert an alle untergeordneten FrameworkElement-Elemente eines FrameworkElement erbt, bei dem ein DataContext-Wert festgelegt wird. Dieses Verhalten ermöglicht es einer Reihe verwandter Elemente, denselben Kontext zum Binden an verschiedene Quelleigenschaften zu verwenden, was besonders für Elementvorlagen, Datenvorlagen und andere Datenbindungsszenarien nützlich ist. Da DataContext erbt, besteht die Möglichkeit, dass jedes FrameworkElement , das den geerbten Wert verwendet, ein anderes DataContextChanged
Ereignis auslöst, das aus dem erbenden Element und nicht vom übergeordneten Element stammt, sobald das Element erkennt, dass sich sein geerbter DataContext-Wert geändert hat. Wenn Sie dieses Verhalten nicht möchten, sollten Sie das Ereignis in der DataContextChanged
übergeordneten Quelle behandeln, in der das Ereignis zuerst ausgelöst wird. Legen Sie im Rahmen ihrer Handlerlogik den Wert der Handled-Eigenschaft in den DataContextChangedEventArgs-Ereignisdaten auf fest true
. Diese Aktion verhindert, dass das Ereignis an untergeordnete Elemente weitergeleitet wird.
Hinweis
DataContextChanged
verfügt über Routingverhalten, ist aber kein echtes Routingereignis (es verfügt nicht über einen RoutedEvent-Bezeichner ). Außerdem wird vom übergeordneten zum untergeordneten Element weitergeleitet, während die wahren Routingereignisse von untergeordneten zu übergeordneten Ereignissen weitergeleitet werden. Wenn Sie mit Windows Presentation Foundation (WPF) vertraut sind, DataContextChanged
kann von den Windows Presentation Foundation -Ereignisroutingdefinitionen (WPF) als Tunnelingroutenereignis betrachtet werden.
DataContextChanged
ist nützlich für Szenarien, in denen steuerungslogik oder andere codebasierte Logik Benachrichtigungen darüber erhalten möchten, dass sich der Datenkontext für Bindungen geändert hat, was häufig bedeutet, dass sich datengebundene Werte ändern. Dies kann als Trigger nützlich sein, um Code auszuführen, der kontextgesteuerte Änderungen vornimmt, und dann kann der neue Kontext von vorhandenen Bindungen verwendet werden, um Werte neu zu berechnen. Dies ist auch nützlich für Fälle, in denen Sie keine bereits vorhandene deklarierte Bindung in Datenvorlagen möchten, aber eine Benachrichtigung für Änderungen benötigen. In diesem Szenario können DataContextChanged
Sie Änderungen am Datenkontext erkennen und als Reaktion direkte Änderungen an anderen Eigenschaften im Code vornehmen, genau wie eine XAML-deklarierte Bindung dynamisch über die Datenbindungs-Engine. Beispielsweise verfügen Sie möglicherweise über ein benutzerdefiniertes Steuerelement, das hauptsächlich in Datenvorlagen verwendet werden kann, und Sie möchten, dass das Steuerelement Bindungsvorgänge ohne explizite Binding
Deklarationen entweder in der XAML der App-Benutzeroberfläche oder in der Datenvorlage ausführen kann.