2011-01-31 4 views

ответ

2

DataGridCells не имеет события Click, у них есть событие Selected, но обычно он запускается для каждой ячейки в строке, когда вы нажимаете на ячейку. GotFocus может быть лучшим выбором.

например.

<DataGrid ItemsSource="{Binding Data}"> 
     <DataGrid.CellStyle> 
      <Style TargetType="{x:Type DataGridCell}"> 
       <EventSetter Event="GotFocus" Handler="CellClick"/> 
      </Style> 
     </DataGrid.CellStyle> 
    </DataGrid> 

и:

void CellClick(object sender, RoutedEventArgs e) 
    { 
     DataGridCell cell = sender as DataGridCell; 
     MessageBox.Show(cell.Column.DisplayIndex.ToString()); 
    } 

DataGridCell.Column.DisplayIndex, кажется, возвращает соответствующий индекс, если это как-то не достаточно, то вы можете использовать DataGrid.Columns.IndexOf(DataGridCell.Column).

1

каждого тело говорит об этом решении

Int32 columnIndex = dataGridScannedFiles.SelectedCells[0].Column.DisplayIndex; 

и да, это работает, но никто не говорит, что мы должны установить индекс отображения первым сюда каждый столбец, могут быть спокойно очевидно для специалистов, чтобы получить это, но для новичков это незнакомое дело

Есть два способа установить его: -

1) Вы можете установить его в XAML части ..

<DataGridTextColumn Header="Serial No." Width="60" IsReadOnly="True" Binding="{Binding Path=Sno}" DisplayIndex="1"></DataGridTextColumn> 

я не знаю, как это сделать для пользовательских столбцов, как

<DataGridTemplateColumn.CellTemplate> 
            <DataTemplate>                
    <CheckBox x:Name="ChkItem" IsChecked="{Binding Path=Sno}"/>         
</DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 

поэтому я предпочел другой путь

2) создали функцию

private void SetDisplayIndexforGridViewColumns() 
     { 
      Int32 ColumnCount = dt.Columns.Count; 

      for (int i = 0; i < ColumnCount; i++) 
      { 
       dataGridScannedFiles.Columns[i].DisplayIndex = i; 

      } 
     } 

dt моя таблица данных

и присваиваю ему индексные индексы

Теперь, если вы используете

Int32 columnIndex = dataGridScannedFiles.SelectedCells[0].Column.DisplayIndex; 

тогда Вы наверняка получить индекс

7

Вы можете использовать ниже код непосредственно, чтобы получить выбранные ячейки столбца индекса.

int index = datagrid.SelectedCells[0].Column.DisplayIndex; 
+0

Спасибо, друг ... –

3

Вы попытались использовать это на мероприятии, чтобы указать индекс столбца?

int columnIndex = dataGrid.CurrentColumn.DisplayIndex; 

Я использую этот код в MouseDoubleClick Event или PreviewKeyUp и отлично работает.

+0

это единственное, что сработало для меня – Erez

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