如何使用MVVM获取Silverlight中的选定单元格值

时间:2012-09-13 15:24:03

标签: silverlight mvvm

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

1 个答案:

答案 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.