У меня есть сетка данных, которая отключила сортировку. Я хочу достичь - щелкнув заголовок столбца, я хочу выделить все ячейки в этом столбце (выберите весь столбец). Я добавил EventSetter
в мой DataGridColumnHeader
, чтобы связать какой-либо метод с событием Click
, но я не знаю, как этот метод должен быть написан. Есть идеи?Выберите весь столбец, щелкнув ColumnHeader. WPF DATAGRID
Мой код:
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
, потому что это было необходимо.
Ну, это близко, но, если я нажимаю на заголовке столбца - он выбирает столбец, но его неактивна select ', и если я щелкнул в каком-то столбце второй раз, он возвращает исключение «Коллекция уже содержит элемент». Он отлично работает только тогда, когда я нажимаю какую-либо ячейку, а затем я нажимаю заголовок столбца (другой - столбец выбранной ячейки), но затем я хочу выбрать только столбец, который я нажал, я не хочу, чтобы эта «лишняя» ячейка выбрана. – MajkeloDev
Так что я думаю .Очистить() не достаточно :( – MajkeloDev
Нет, это работает :) Я просто очищал неправильную коллекцию, я написал SelectedItems вместо SelectedCells. Спасибо за помощь ! Отмечено как ответ :) – MajkeloDev