2011-01-31 14 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; 

について告げるとはい、それは動作しますが、誰もが、我々は、すべての列あちこちに最初に表示インデックスを設定する必要が専門家はそれを取得することが明らかに静かであり得ることを伝えていないが、初心者のためには、それを設定するには2つの方法があり、不慣れな事

です: -

1)あなたはXAMLの部分でそれを設定することができますが...

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

私はので、私は他の道

2を優先

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

のようなカスタム列のためにそれを設定する方法がわからないが)

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

関連する問題