DataContextChanged-Ereignis

FrameworkElement.DataContextChanged Event

Tritt ein, wenn der Wert der FrameworkElement.DataContext-Eigenschaft geändert wird.

Syntax


public event TypedEventHandler<FrameworkElement, DataContextChangedEventArgs> DataContextChanged

Ereignisinformationen

Delegat TypedEventHandler<FrameworkElement, DataContextChangedEventArgs>

Hinweise

Die FrameworkElement.DataContext-Eigenschaft verfügt über ein integriertes Verhalten, mit dem ihr Wert auf alle untergeordneten FrameworkElement-Elemente von FrameworkElement vererbt wird, für die ein DataContext-Wert festgelegt wird. Dieses Verhalten ermöglicht, dass eine Gruppe von zugehörigen Elementen den gleichen Kontext verwenden, um sich an verschiedene Quelleigenschaften zu binden, was für Elementvorlagen, Datenvorlagen und andere Datenbindungsszenarios besonders nützlich ist. Da DataContext erbt, kann jedes FrameworkElement, das den geerbten Wert verwendet, potenziell ein anderes DataContextChanged-Ereignis auslösen, das vom erbenden Element stammt, nicht vom übergeordneten Element, sobald das Element erkennt, dass der geerbte DataContext-Wert geändert wurde. Wenn Sie dieses Verhalten nicht möchten, sollten Sie das DataContextChanged-Ereignis in der übergeordneten Quelle behandeln, in der das Ereignis zuerst ausgelöst wird. Legen Sie als Teil der Handlerlogik den Wert der Handled-Eigenschaft in den DataContextChangedEventArgs-Ereignisdaten auf true fest. Diese Aktion verhindert, dass das Ereignis zu untergeordneten Elementen weiterleitet.

Hinweis  DataContextChanged weist Routingverhalten auf, ist aber kein echtes Routingereignis (es besitzt keinen RoutedEvent-Bezeichner). Darüber hinaus wird vom übergeordneten zum untergeordneten Element weitergeleitet, während die Routingereignisse vom Typ "true" vom untergeordneten Element zum übergeordneten Element weiterleiten. Wenn Sie mit Windows Presentation Foundation (WPF) vertraut sind: DataContextChanged kann als ein tunnelndes Routingereignis gemäß der WPF-Ereignisroutingdefinitionen angesehen werden.

DataContextChanged ist für Szenarios nützlich, in denen die Steuerelementlogik oder andere codebasierte Logik darüber benachrichtigt werden muss, dass sich der Datenkontext für Bindungen geändert hat, was oft auch bedeutet, dass sich die datengebundenen Werte ändern. Dies kann als Auslöser nützlich sein, um Code auszuführen, der kontextgetriebene Änderungen vornimmt, und anschließend kann der neue Kontext von vorhandenen Bindungen verwendet werden, um Werte nachzurechnen. Es ist auch für Fälle nützlich, in denen Sie keine bereits deklarierte vorhandene Bindung in Datenvorlagen benötigen, jedoch eine Benachrichtigung für Änderungen erfordern. In diesem Szenario können Sie DataContextChanged behandeln, um Änderungen am Datenkontext zu erkennen und direkte Änderungen von anderen Eigenschaften im Code in der Antwort vornehmen, so wie es mit einer XAML-deklarierten Bindung über das Datenbindungsmodul dynamisch geschieht. Sie können beispielsweise über ein benutzerdefiniertes Steuerelement verfügen, das vorwiegend in Datenvorlagen verwendet werden soll, und das Steuerelement soll Bindungsvorgänge ohne explizite Binding-Deklarationen in der UI-XAML der App oder in der Datenvorlage auszuführen können.

Windows 8-Verhalten

Windows 8 hatte ein Problem beim Verfolgen mehrerer Listener für dieses Ereignis. Wenn mehrere Listener/Handler für das Ereignis vorhanden sind, würden bei dem Versuch, einen davon zu entfernen, alle entfernt werden. Das Problem ist in Windows 8.1 behoben; das Entfernen von Ereignishandler entfernt ordnungsgemäß nur einen Listener. Für den Großteil des Codes sind keine Änderungen oder Verhaltensüberprüfungen erforderlich, da mehrere Listener ein ungewöhnliches Szenario darstellen.

Apps, die für Windows 8 kompiliert wurden, jedoch unter Windows 8.1 ausgeführt werden, verwenden weiterhin das Windows 8-Verhalten.

Anforderungen

Mindestens unterstützter Client

Windows 8.1

Mindestens unterstützter Server

Windows Server 2012 R2

Namespace

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

Metadaten

Windows.winmd

Siehe auch

FrameworkElement
DataContext
DataContextChangedEventArgs
Übersicht über die Datenbindung

 

 

Anzeigen:
© 2018 Microsoft