/ / ¿Cómo adjuntar al evento DataGridCell.Selected en comportamiento? - wpf, datagrid, comportamiento, datagridcell

¿Cómo adjuntar a DataGridCell.Selected evento en el comportamiento? - wpf, datagrid, comportamiento, datagridcell

Estoy usando DataGridCell.Seleccionado para hacer algunas cosas en mi código detrás.

<DataGrid DataGridCell.Selected="ArticlesGrid_OnSelected>

Y en mi código detrás tengo un método como

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

Pero quiero usar un comportamiento en su lugar y no tengo idea de cómo adjuntarme al evento en mi comportamiento.

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

protected override void OnDetaching()
{

}
}

Para probar usé este código en mi método OnAttached.

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

Pero no sé cómo eliminar este controlador de eventos en mi método OnDetaching.

Respuestas

0 para la respuesta № 1

Obtiene el objetivo del comportamiento en la propiedad AssociatedObject. Entonces puede hacer algo como esto:

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>