0

5列のデータグリッドがあります。セルの値をユーザーが選択したい。選択した行インデックスは取得できますが、列インデックスは取得できません。

4

1 に答える 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このソリューションは、現在のセルが変更されるたびに、選択された列のインデックスを更新するイベントに依存しています。

このソリューションは、列の並べ替えに関係なく、同じ列に対して同じインデックスを返します。つまり、1つの列にインデックス2があり、その列をグリッド内の別の場所にドラッグしても、インデックス2は残ります。

于 2012-09-15T16:29:03.220 に答える