/ / Comment attacher à l'événement DataGridCell.Selected dans le comportement? - wpf, datagrid, comportement, datagridcell

Comment attacher un événement DataGridCell.Selected à un comportement? - wpf, datagrid, comportement, datagridcell

J'utilise le DataGridCell.Slected pour faire certaines choses dans mon code derrière.

<DataGrid DataGridCell.Selected="ArticlesGrid_OnSelected>

Et dans mon code derrière j'ai une méthode comme

private void ArticlesGrid_OnSelected(object sender, RoutedEventArgs e)
{
....
}

Mais je veux utiliser un comportement à la place et je n'ai aucune idée de comment attacher à l'événement dans mon comportement.

public class MyBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
//don"t know how to attach to the event
}

protected override void OnDetaching()
{

}
}

Pour les tests, j'ai utilisé ce code dans ma méthode OnAttached.

EventManager.RegisterClassHandler(AssociatedType, DataGridCell.SelectedEvent, new RoutedEventHandler(ArticlesGrid_OnSelected));

Mais je ne sais pas comment supprimer ce gestionnaire d'événements dans ma méthode OnDetaching.

Réponses:

0 pour la réponse № 1

Vous obtenez la cible du comportement dans la propriété AssociatedObject. Vous pouvez donc faire quelque chose comme ceci:

public class MyBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
AssociatedObject.SelectionChanged += MyEventHandler;
}

protected override void OnDetaching()
{
AssociatedObject.SelectionChanged -= MyEventHandler;
}

protected void MyEventHandler(object sender, SelectionChangedEventArgs e) {
// Do stuff
}
}

Xaml

<DataGrid>
<i:Interaction.Behaviors>
<local:MyBehavior/>
</i:Interaction.Behaviors>
</DataGrid>