作者:Borisyu | 来源:互联网 | 2023-10-09 19:12
WPFDatagrid“全选”按钮–“全部取消选择”?我想知道是否可以在数据网格左上角的“全选”按钮中添加function,以便它也可以取消选择所有行?我有一个方法附加
WPF Datagrid“全选”按钮 – “全部取消选择”?
我想知道是否可以在数据网格左上角的“全选”按钮中添加function,以便它也可以取消选择所有行? 我有一个方法附加到一个按钮来执行此操作,但如果我可以从全选按钮触发此方法,以保持function在视图的相同部分,这将是很好的。 这个“全选”按钮是否可以添加代码,如果是,那么如何进入按钮? 我找不到任何例子或建议。
好好经过大量搜索后我发现了怎么做到了Colin Eberhardt的按钮,这里:
在附加行为的控件模板中设置难以触及的元素
然后我在他的类中扩展了“Grid_Loaded”方法,为按钮添加了一个事件处理程序,但是请记住首先删除默认的“Select All”命令(否则,在运行我们添加的事件处理程序之后,命令就会运行)。
/// /// Handles the DataGrid's Loaded event. /// /// Sender object. /// Event args. 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); } /// /// Handles the DataGrid's select all button's click event. /// /// Sender object. /// Event args. 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
基本上,如果没有选择任何行,它'选择全部',如果不选择它'取消选择全部'。 它的工作方式非常像你期望选择/取消选择所有工作,我不敢相信他们没有让命令默认这样做,说实话,也许在下一个版本中。
希望这对任何人都有帮助,干杯,威尔
我们可以添加一个命令绑定来处理selectall事件。
请参阅: 全选的事件:WPF Datagrid
上述就是C#学习教程:WPF Datagrid“全选”按钮 – “全部取消选择”?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---编程笔记