Tengo un DataGrid con la primera columna como columna de texto y la segunda columna como columna CheckBox. Lo que quiero es, si hago clic en la casilla de verificación. Debería ser revisado.
Sin embargo, se requieren dos clics para ser seleccionado, para el primer clic se selecciona la celda, para los segundos clics se marca la casilla de verificación. Cómo hacer que la casilla de verificación se marque / desmarque con un solo clic.
Estoy usando WPF 4.0. Las columnas en la cuadrícula de datos se autogeneran.
wpf
datagrid
wpfdatagrid
Príncipe Ashitaka
fuente
fuente
Respuestas:
Para la casilla de verificación DataGrid de un solo clic, simplemente puede colocar el control de casilla de verificación regular dentro
DataGridTemplateColumn
y configurarUpdateSourceTrigger=PropertyChanged
.fuente
DataGridTemplateColumn.CellTemplate
con su propio enlace y funcionará! La respuesta de @ weidian-huang me ayudó a entender eso, ¡gracias!Resolví esto con el siguiente estilo:
Por supuesto, es posible adaptar esto aún más para columnas específicas ...
fuente
En primer lugar, sé que esta es una pregunta bastante antigua, pero todavía pensé que intentaría responderla.
Tuve el mismo problema hace un par de días y encontré una solución sorprendentemente corta (ver este blog ). Básicamente, todo lo que necesita hacer es reemplazar la
DataGridCheckBoxColumn
definición en su XAML con lo siguiente:La ventaja de esta solución es obvia: es solo XAML; por lo tanto, evita que cargue su código con lógica UI adicional y lo ayuda a mantener su estado ante los fanáticos de MVVM;).
fuente
Para que la respuesta de Konstantin Salavatov trabajo con
AutoGenerateColumns
, agregar un controlador de eventos para losDataGrid
'sAutoGeneratingColumn
con el siguiente código:Esto hará que todas
DataGrid
las columnas de casillas de verificación autogeneradas sean editables con un solo clic.fuente
Basado en el blog al que se hace referencia en la respuesta de Goblin, pero modificado para funcionar en .NET 4.0 y con el modo de selección de filas.
Tenga en cuenta que también acelera la edición de DataGridComboBoxColumn, al ingresar al modo de edición y mostrar el menú desplegable con un solo clic o entrada de texto.
XAML:
Código detrás:
fuente
He intentado estas sugerencias y muchas otras que he encontrado en otros sitios, pero ninguna de ellas me funcionó. Al final, creé la siguiente solución.
Creé mi propio control heredado de DataGrid y simplemente le agregué este código:
¿Qué hace todo esto?
Bueno, cada vez que hacemos clic en cualquier celda de nuestro DataGrid, vemos si la celda contiene un control CheckBox dentro de ella. Si lo hace , a continuación, vamos a establecer el foco a esa CheckBox y alternar su valor .
Esto parece funcionar para mí, y es una buena solución, fácilmente reutilizable.
Sin embargo, es decepcionante que necesitemos escribir código para hacer esto. La explicación de que el primer clic del mouse (en un CheckBox de DataGrid) se "ignora" a medida que WPF lo usa para poner la fila en modo Edición puede sonar lógico, pero en el mundo real, esto va en contra de la forma en que funciona cada aplicación real.
Si un usuario ve una casilla de verificación en su pantalla, debería poder hacer clic en ella una vez para marcarla o desmarcarla. Fin de la historia.
fuente
Hay una solución mucho más simple aquí.
Si utiliza
DataGridCheckBoxColumn
para implementar, el primer clic es para enfocar, el segundo clic es para verificar.Pero usar
DataGridTemplateColumn
para implementar solo necesita un clic.La diferencia de uso
DataGridComboboxBoxColumn
e implementación porDataGridTemplateColumn
también es similar.fuente
Resolví con esto:
¡La casilla de verificación activa con un solo clic!
fuente
Base en la respuesta de Jim Adorno y comentarios en su publicación, esta es la solución con
MultiTrigger
:fuente
Otra solución simple es agregar este estilo a su DataGridColumn. El cuerpo de su estilo puede estar vacío.
fuente
fuente