首页 文章

(WPF Datagrid)如何确定项的列索引

提问于
浏览
7

当我单击我正在使用Visual Studio 2010 / VB.Net的单元格时,如何返回WPF Datagrid中项目的列索引

4 回答

  • 3

    您可以直接使用下面的代码来获取选定的单元格列索引 .

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

    您是否尝试在事件点击列索引中使用此功能?

    int columnIndex = dataGrid.CurrentColumn.DisplayIndex;
    

    我在MouseDoubleClick事件或PreviewKeyUp中使用此代码并且工作正常 .

  • 3

    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) .

  • 9

    每个身体都讲述了这个解决方案

    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;
    

    那你一定会得到指数

相关问题