FrameworkElement.DataContextChanged Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Se produit lorsque la valeur de la propriété FrameworkElement.DataContext change.
// 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"/>
Type d'événement
Remarques
La propriété FrameworkElement.DataContext a un comportement intégré dans lequel sa valeur hérite de tous les éléments enfants FrameworkElement d’un FrameworkElement où une valeur DataContext est définie. Ce comportement permet à un ensemble d’éléments associés d’utiliser le même contexte pour se lier à différentes propriétés sources, ce qui est particulièrement utile pour les modèles d’élément, les modèles de données et d’autres scénarios de liaison de données. Étant donné que DataContext hérite, il existe un potentiel pour chaque FrameworkElement qui utilise la valeur héritée pour déclencher un autre événement DataContextChanged provenant de l’élément hérité, et non de l’élément parent, une fois que l’élément détecte que sa valeur DataContext héritée a changé. Si vous ne souhaitez pas ce comportement, vous devez gérer l’événement DataContextChanged sur la source parente, où l’événement se déclenche en premier. Dans le cadre de votre logique de gestionnaire, définissez la valeur de la propriété Handled dans les données d’événement DataContextChangedEventArgs sur true. Cette action empêche l’événement de router vers des éléments enfants.
Notes
DataContextChanged a un comportement de routage, mais n’est pas un véritable événement routé (il n’a pas d’identificateur RoutedEvent ). En outre, il achemine du parent à l’enfant, tandis que les événements routés vrais acheminent de l’enfant au parent. Si vous êtes familiarisé avec Windows Presentation Foundation (WPF), DataContextChanged peut être considéré comme un événement routé de tunneling par les définitions de routage d’événements Windows Presentation Foundation (WPF).
DataContextChanged est utile pour les scénarios dans lesquels la logique de contrôle ou toute autre logique basée sur le code souhaite que le contexte de données des liaisons ait changé, ce qui signifie souvent que les valeurs liées aux données changeront. Cela peut être utile comme déclencheur pour exécuter du code qui apporte des modifications contextuelles, puis le nouveau contexte peut être utilisé par des liaisons existantes pour recalculer des valeurs. Il est également utile pour les cas où vous ne souhaitez pas de liaison déclarée préexistante dans les modèles de données, mais avez besoin d’une notification pour les modifications. Dans ce scénario, vous pouvez gérer DataContextChanged pour détecter les modifications apportées au contexte de données et apporter des modifications directes à d’autres propriétés de votre code en réponse, tout comme une liaison déclarée par XAML le fait dynamiquement via le moteur de liaison de données. Par exemple, vous pouvez avoir un contrôle personnalisé qui est principalement destiné à être utilisé à l’intérieur des modèles de données, et vous souhaitez que le contrôle soit en mesure d’effectuer des opérations de liaison sans déclarations de liaison explicites dans le XAML de l’interface utilisateur de l’application ou dans le modèle de données.