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 № 1Obtiene 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>