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

Jas*_*son 7 vb.net wpf datagrid wpf-controls

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

小智 9

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

int index = datagrid.SelectedCells[0].Column.DisplayIndex;
Run Code Online (Sandbox Code Playgroud)


小智 6

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

int columnIndex = dataGrid.CurrentColumn.DisplayIndex;
Run Code Online (Sandbox Code Playgroud)

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


H.B*_*.B. 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>
Run Code Online (Sandbox Code Playgroud)

和:

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

DataGridCell.Column.DisplayIndex似乎返回一个适当的索引,如果它还不够,您可以使用DataGrid.Columns.IndexOf(DataGridCell.Column).