Me gustaría saber si sería posible agregar funcionalidad al botón "Seleccionar todo" en la parte superior izquierda de una cuadrícula de datos para que también se deshagan todas las filas? Tengo un método adjunto a un botón que hace esto, pero sería genial si pudiera iniciar este método desde el botón Seleccionar todo, para mantener la funcionalidad en la misma parte de la vista. ¿Este botón "Seleccionar todo" tiene un código agregado y, de ser así, cómo se puede acceder al botón? No he podido encontrar ningún ejemplo o sugerencia.WPF Datagrid Botón "Seleccionar todo" - "Deseleccionar todo" también?
Respuesta
OK después de mucho buscar he encontrado la manera de hacer llegar al botón de Colin Eberhardt, aquí:
Styling hard-to-reach elements in control templates with attached behaviours
Entonces extendió el método "Grid_Loaded" en su clase para añadir un evento manipular el botón, pero recuerde eliminar primero el comando predeterminado 'Seleccionar todo' (de lo contrario, después de ejecutar el controlador de eventos que hemos agregado, se ejecuta el comando).
/// <summary>
/// Handles the DataGrid's Loaded event.
/// </summary>
/// <param name="sender">Sender object.</param>
/// <param name="e">Event args.</param>
private static void Grid_Loaded(object sender, RoutedEventArgs e)
{
DataGrid grid = sender as DataGrid;
DependencyObject dep = grid;
// Navigate down the visual tree to the button
while (!(dep is Button))
{
dep = VisualTreeHelper.GetChild(dep, 0);
}
Button button = dep as Button;
// apply our new template
ControlTemplate template = GetSelectAllButtonTemplate(grid);
button.Template = template;
button.Command = null;
button.Click += new RoutedEventHandler(SelectAllClicked);
}
/// <summary>
/// Handles the DataGrid's select all button's click event.
/// </summary>
/// <param name="sender">Sender object.</param>
/// <param name="e">Event args.</param>
private static void SelectAllClicked(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
DependencyObject dep = button;
// Navigate up the visual tree to the grid
while (!(dep is DataGrid))
{
dep = VisualTreeHelper.GetParent(dep);
}
DataGrid grid = dep as DataGrid;
if (grid.SelectedItems.Count < grid.Items.Count)
{
grid.SelectAll();
}
else
{
grid.UnselectAll();
}
e.Handled = true;
}
En esencia, si las filas no se seleccionan que 'se seleccionan todos', si no es deselecciona todos ". Funciona más o menos como esperarías que un seleccionar/deseleccionar todo funcione, no puedo creer que no hicieron el comando de hacer esto de forma predeterminada para ser honesto, tal vez en la próxima versión.
Espero que esto ayude a alguien de todos modos, Saludos, Will
se puede añadir una CommandBinding para controlar el evento selectall.
- 1. Evento para Seleccionar todo: WPF Datagrid
- 2. 'seleccionar todo' y 'eliminar todo' con choose.js
- 3. Highcharts: botón "Imprimir todo"
- 4. UISearchBar seleccionar todo el texto
- 5. Casilla de casilla de verificación DataGridView "seleccionar todo" rendimiento
- 6. SQL seleccionar todo por una tabla sólo
- 7. SQL seleccionar todo en una matriz
- 8. RegEx para seleccionar todo entre dos caracteres?
- 9. Jquery seleccionar todo si no está deshabilitado
- 10. "Seleccionar/Deseleccionar" múltiples campos seleccionados
- 11. Estirar columnas para llenar todo el espacio disponible de DataGrid
- 12. ¿Por qué todo en WPF es borroso?
- 13. ¿Hay un RowSpan = "Todo" en WPF?
- 14. eliminación de todo, por el personaje (y también de carácter)
- 15. ¿Cómo seleccionar todo el texto en contenteditable div?
- 16. WPF DataGrid SelectedItem
- 17. Git GUI .. escenificar todo
- 18. MySQL, donde todo en
- 19. Estilo WPF DataGrid-Silverlight DataGrid?
- 20. WPF: hacer que todo el borde haga clic en
- 21. ListBox con selección simple y también deseleccionar al hacer clic ...?
- 22. WPF DataGrid Columna Ancho
- 23. todo en uno botón social de oauth/login
- 24. Código C# para seleccionar todas las casillas de verificación wpf datagrid
- 25. Desmarque todo RadioButton en un RadioButtonGroup
- 26. WPF ToolKit DataGrid Performance
- 27. Cómo hacerlo Seleccionar todo (*) en linq a sql
- 28. Seleccionar todo como valor predeterminado para el parámetro Multivalue
- 29. ¿Cómo seleccionar programáticamente todo el contenido de WebView?
- 30. Seleccionar todo li de los niños, pero no
Muy útil gracias! – Sharun
Gracias - El ejemplo de código estaría completo si se incluyera la definición de 'GetSelectAllButtonTemplate()'. – PandaWood