我有一个禁用排序的数据网格。我想要实现的是 - 通过单击列标题我想要选择此列中的所有单元格(选择整列)。我已将EventSetter
添加到DataGridColumnHeader
以将某些方法绑定到Click
事件,但我不知道应该如何编写此方法。有什么想法吗?
我的代码:
private void columnHeaderClick(object sender, RoutedEventArgs e)
{
var columnHeader = sender as DataGridColumnHeader;
if (columnHeader != null)
{
if (dgDane.SelectedCells != null)
{
dgDane.SelectedCells.Clear();
}
foreach (var item in dgDane.Items)
{
dgDane.SelectedCells.Add(new DataGridCellInfo(item, columnHeader.Column));
}
dgDane.Focus();
}
}
我编辑了代码,上面的这个工作正常(感谢@nit)。我已将焦点添加到DataGrid
,因为这是必要的。
答案 0 :(得分:5)
这应该可以解决问题
private void columnHeaderClick(object sender, RoutedEventArgs e)
{
var columnHeader = sender as DataGridColumnHeader;
if (columnHeader != null)
{
dataGrid.SelectedCells.Clear();
foreach (var item in dataGrid.Items)
{
dataGrid.SelectedCells.Add(new DataGridCellInfo(item,columnHeader.Column));
}
}
}
确保在SelectionUnit="Cell"
DataGrid
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" IsSynchronizedWithCurrentItem="True"
SelectionUnit="Cell" />