2014-06-09 6 views
0

У меня есть сетка данных, которая отключила сортировку. Я хочу достичь - щелкнув заголовок столбца, я хочу выделить все ячейки в этом столбце (выберите весь столбец). Я добавил 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, потому что это было необходимо.

ответ

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" /> 
+0

Ну, это близко, но, если я нажимаю на заголовке столбца - он выбирает столбец, но его неактивна select ', и если я щелкнул в каком-то столбце второй раз, он возвращает исключение «Коллекция уже содержит элемент». Он отлично работает только тогда, когда я нажимаю какую-либо ячейку, а затем я нажимаю заголовок столбца (другой - столбец выбранной ячейки), но затем я хочу выбрать только столбец, который я нажал, я не хочу, чтобы эта «лишняя» ячейка выбрана. – MajkeloDev

+0

Так что я думаю .Очистить() не достаточно :( – MajkeloDev

+0

Нет, это работает :) Я просто очищал неправильную коллекцию, я написал SelectedItems вместо SelectedCells. Спасибо за помощь ! Отмечено как ответ :) – MajkeloDev

Смежные вопросы