0

我有一个有五列的数据网格。我希望用户选择单元格的值。我能够获得选定的行索引,但不能获得列索引。

4

1 回答 1

1

获取当前单元格的列索引的一种方法是继承 DataGrid 并添加一个额外的依赖属性:

public class ExtendedDataGrid : DataGrid
{
    public ExtendedDataGrid() :
        base()
    {
        CurrentCellChanged += ExtendedDataGrid_CurrentCellChanged;
    }

    public static readonly DependencyProperty SelectedColumnIndexProperty =
        DependencyProperty.Register("SelectedColumnIndex", typeof(int), typeof(ExtendedDataGrid), null);

    public int SelectedColumnIndex
    {
        get { return (int)GetValue(SelectedColumnIndexProperty); }
        set { SetValue(SelectedColumnIndexProperty, value); }
    }

    private void ExtendedDataGrid_CurrentCellChanged(object sender, EventArgs e)
    {
        SelectedColumnIndex = Columns.IndexOf(CurrentColumn);
    }
}

此解决方案依赖于CurrentCellChanged事件来在当前单元格更改时更新所选列的索引。

无论列的任何重新排序如何,此解决方案都会为同一列返回相同的索引。换句话说,如果一列的索引为 2,而您将该列拖到网格中的其他位置,它的索引仍然为 2。

于 2012-09-15T16:29:03.220 回答