我有一个有五列的数据网格。我希望用户选择单元格的值。我能够获得选定的行索引但不能获得列索引。
答案 0 :(得分: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.