MVVMなWPFアプリでDataGridの行と列情報を取得してみる

2020/02/17

C# WPF

アイキャッチ

コレ、検索してもなかなか良い感じの情報にヒットしないんですよね。

てな事で検索情報とプロパティを眺めながら試してみました。

データが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初心者の私には腑に落ちない事象がいっぱい出てきます。

自己紹介

自分の写真



新潟県のとある企業で働いてます。
【できる事】
電子回路設計
基板パターン設計
マイコンプログラム
C#(WinForms WPF)を使ったWindowsアプリケーション作成
PLCラダー
自動化装置アドバイザー
にほんブログ村 IT技術ブログ ソフトウェアへ

カテゴリ

このブログを検索

QooQ