FrameworkElement.DataContextChanged Evento

Definición

Se produce cuando cambia el valor de la propiedad 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 de evento

Comentarios

La propiedad FrameworkElement.DataContext tiene un comportamiento integrado por el que su valor hereda todos los elementos secundarios FrameworkElement de un frameworkElement donde se establece un valor DataContext . Este comportamiento permite que un conjunto de elementos relacionados use el mismo contexto para enlazar a diferentes propiedades de origen, lo que resulta especialmente útil para plantillas de elementos, plantillas de datos y otros escenarios de enlace de datos. Dado que DataContext hereda, existe la posibilidad de que cada FrameworkElement use el valor heredado para desencadenar otro evento DataContextChanged que se origine desde el elemento heredado, no del elemento primario, una vez que el elemento detecte que su valor DataContext heredado ha cambiado. Si no desea este comportamiento, debe controlar el evento DataContextChanged en el origen primario, donde se activará primero el evento. Como parte de la lógica del controlador, establezca el valor de la propiedad Handled en los datos del evento DataContextChangedEventArgs en true. Esa acción impedirá que el evento se enruta a elementos secundarios.

Nota:

DataContextChanged tiene un comportamiento de enrutamiento, pero no es un evento enrutado verdadero (no tiene un identificador RoutedEvent ). Además, se enruta de elementos primarios a secundarios, mientras que los eventos enrutados verdaderos se enrutan de elemento secundario a primario. Si está familiarizado con Windows Presentation Foundation (WPF), DataContextChanged podría considerarse un evento enrutado de tunelización por las definiciones de enrutamiento de eventos de Windows Presentation Foundation (WPF).

DataContextChanged es útil para escenarios en los que la lógica de control u otra lógica basada en código quiere notificar que el contexto de datos de los enlaces ha cambiado, lo que a menudo significa que los valores enlazados a datos cambiarán. Esto puede ser útil como desencadenador para ejecutar código que realiza cambios controlados por contexto y, a continuación, los enlaces existentes pueden usar el nuevo contexto para recalcular los valores. También es útil para los casos en los que no desea un enlace declarado previamente en plantillas de datos, pero necesita una notificación para los cambios. En este escenario, puedes controlar DataContextChanged para detectar cambios en el contexto de datos y realizar cambios directos en otras propiedades del código en respuesta, al igual que un enlace declarado por XAML realiza dinámicamente a través del motor de enlace de datos. Por ejemplo, puede tener un control personalizado que se use principalmente dentro de plantillas de datos y desea que el control pueda realizar operaciones de enlace sin declaraciones explícitas binding en el XAML de la interfaz de usuario de la aplicación o en la plantilla de datos.

Se aplica a

Consulte también