A veces nos interesa hacer un check en un campo Checkbox de un Datagrid en XAML, sin que se seleccione la fila que estamos seleccionando. En muchas ocasiones al seleccionar una fila realizamos una acción que puede retardar la respuesta de nuestra aplicación. Para evitar esto podemos hacer que al hacer check en el Checkbox no seleccione la fila y esto se hace con el siguiente código.
Lo primero es añadir el evento Preview a nuestro Checkbox.
1 |
<CheckBox IsChecked="False" PreviewMouseLeftButtonDown="CheckBox_PreviewMouseLeftButtonDown"/> |
Añadimos el evento a nuestro código CS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private void CheckBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //Obtenemos el checkbox var chk = (CheckBox)sender; //Marcamos el nuevo valor IsChecked var newValue = !chk.IsChecked.GetValueOrDefault(); //Asignamos el valor IsChecked chk.IsChecked = newValue; //Marcamos para que no se propague hacia abajo. e.Handled = true; } |
Así de sencillo y funciona :).