FrameworkElement.DataContextChanged Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando o valor da propriedade FrameworkElement.DataContext é alterado.
// 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
Comentários
A propriedade FrameworkElement.DataContext tem um comportamento interno pelo qual seu valor herda para todos os elementos filho FrameworkElement de um FrameworkElement em que um valor DataContext é definido. Esse comportamento permite que um conjunto de elementos relacionados use o mesmo contexto para associar a propriedades de origem diferentes, o que é particularmente útil para modelos de item, modelos de dados e outros cenários de associação de dados. Como DataContext herda, há potencial para cada FrameworkElement que usa o valor herdado para disparar outro DataContextChanged
evento originado do elemento herdado, não o elemento pai, depois que o elemento detecta que seu valor DataContext herdado foi alterado. Se você não quiser esse comportamento, deverá manipular o DataContextChanged
evento na origem pai, em que o evento será acionado primeiro. Como parte da lógica do manipulador, defina o valor da propriedade Handled nos dados do evento DataContextChangedEventArgs como true
. Essa ação impedirá o roteamento do evento para elementos filho.
Observação
DataContextChanged
tem comportamento de roteamento, mas não é um evento roteado verdadeiro (ele não tem um identificador RoutedEvent ). Além disso, ele roteia de pai para filho, enquanto os verdadeiros eventos roteado roteam de filho para pai. Se você estiver familiarizado com Windows Presentation Foundation (WPF), DataContextChanged
poderá ser considerado um evento roteado de túnel pelas definições de roteamento de eventos do Windows Presentation Foundation (WPF).
DataContextChanged
é útil para cenários em que a lógica de controle ou outra lógica baseada em código deseja notificação de que o contexto de dados para associações foi alterado, o que geralmente significa que os valores associados a dados serão alterados. Isso pode ser útil como um gatilho para executar o código que faz alterações controladas por contexto e, em seguida, o novo contexto pode ser usado por associações existentes para recalcular valores. Também é útil para casos em que você não deseja uma associação declarada pré-existente em modelos de dados, mas precisa de uma notificação para alterações. Nesse cenário, você pode lidar DataContextChanged
para detectar alterações no contexto de dados e fazer alterações diretas em outras propriedades em seu código em resposta, assim como uma associação declarada por XAML faz dinamicamente por meio do mecanismo de associação de dados. Por exemplo, você pode ter um controle personalizado que é principalmente para uso dentro de modelos de dados e deseja que o controle seja capaz de executar operações de associação sem declarações explícitas Binding
no XAML da interface do usuário do aplicativo ou no modelo de dados.