コレ、検索してもなかなか良い感じの情報にヒットしないんですよね。
てな事で検索情報とプロパティを眺めながら試してみました。
データがBindingされていればセル内の編集された値は反映できるので行とか列の情報なんてあまり必要としません。
今回行と列の情報が必要になった経緯は
1. モニータはタッチパネルモニータである。
2. キーボードは置きたくない。
3. 数値入力だけを作業者が行う。
といった理由です。
サンプルプログラムにはありませんがDataGridの編集したいセルをタッチするとテンキーが配置されたIDialogResultが開き、作業者がテンキーから数値を入力し確定すると、行列の情報からBindingされているデータをプログラムで書き換えます。
サンプルプログラムに目的以外のコードを書くと可読性が落ちるので今回は「行」と「列」の情報を取得する事だけに的を絞ります。
DataGridの情報が必要になりますので2つのプロパティをBindingします。
1つはSelectedIndexプロパティです。これで選択されている行の情報が取得できます。
もう1つの列情報ですが、これはCurrentCellプロパティの「Column.DisplayIndex」となります。
正直言うと面倒ですよね。
CurrentCellプロパティにRowとColumnのプロパティあってもいいじゃんと思います。
あとSelectionUnitプロパティが「Cell」だとSelectedIndexプロパティは正しく取得できません。(コレも何だかな~)
もう1つCurrentCellプロパティのBindingには「Mode=OneWayToSource」が必要ですがSelectedIndexプロパティは記述しなくても取得できます。
WPF初心者の私には腑に落ちない事象がいっぱい出てきます。
0 件のコメント:
コメントを投稿