选择全部按钮WPF DataGrid

ure*_*ema 14 wpf select user-controls datagrid

我想知道是否有禁用WPF DataGrid顶角的select all选项....这似乎只发生在我向WPF中的fixeddocument添加UserControl时.

提前致谢,

U.

Var*_*ain 31

有一个属性HeadersVisibilityDataGrid.它有四个值- ,All,Column,.RowNone

使用HeadersVisibility = All,您将获得SelectAll按钮.

使用HeadersVisibility = Column,您将只获得列.不是SelectAll Button或Row Headers来选择一个完整的行.

使用HeadersVisibility = Row,您将只获得Row标题以选择整行.不是SelectAll按钮或列.

有了HeadersVisibility = None,你什么也得不到.所有标题都将被隐藏.

我希望这可以帮助你.


Mar*_*ter 6

在使用Snoop分析我放在一起的测试应用程序的Visual Tree之后,我使用DataGrid_Loaded事件想出了这个解决方案:

private void TheGrid_Loaded(object sender, RoutedEventArgs e) {
    var dataGrid = (DataGrid)sender;
    var border = (Border)VisualTreeHelper.GetChild(dataGrid, 0);
    var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
    var grid = (Grid)VisualTreeHelper.GetChild(scrollViewer, 0);
    var button = (Button)VisualTreeHelper.GetChild(grid, 0);
    button.IsEnabled = false;
}
Run Code Online (Sandbox Code Playgroud)

可能有一个更优雅的XAML解决方案,但这是首先想到的,它似乎运行良好(我显然也没有做任何异常处理).

注意:我没有玩过禁用/重新启用DataGrid以确保select all按钮保持禁用状态.如果它没有保持禁用状态,那么您可能还想要挂钩DataGrid_IsEnabledChanged事件.

希望这可以帮助!!

  • 这是一个糟糕的解决方案,非常容易在xaml构造中进行修改.如果您只想禁用按钮,请使用Eben建议的命令绑定,或者如果要隐藏按钮,请禁用Varun建议的显示. (2认同)