C#学习教程:WPF Datagrid“全选”按钮 – “全部取消选择”?分享


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 < grid.Items.Count) { grid.SelectAll(); } else { grid.UnselectAll(); } e.Handled = true; } 

基本上,如果没有选择任何行,它'选择全部',如果不选择它'取消选择全部'。 它的工作方式非常像你期望选择/取消选择所有工作,我不敢相信他们没有让命令默认这样做,说实话,也许在下一个版本中。

希望这对任何人都有帮助,干杯,威尔

我们可以添加一个命令绑定来处理selectall事件。

请参阅: 全选的事件:WPF Datagrid

上述就是C#学习教程:WPF Datagrid“全选”按钮 – “全部取消选择”?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031557.html

发表评论

邮箱地址不会被公开。 必填项已用*标注