WPF
備忘録

【備忘録】WPFのDataGridのCanUserDeleteRowsとCanUserAddRowsの初期値を疑問に思った件

この記事は、簡単な情報共有です。

WPFのDataGridで、行の削除を禁止していたつもりが、キーボードでDeleteキーを押したら削除できてしまった時の備忘録。


開発環境

Visual Studio Community 2017

WPFアプリ(.NET Framework) のプロジェクト

Windows10 Home 64bit


はじめの状況

image.png

DataGridのプロパティでは、[CanUserAddRows]と[CanUserDeleteRows]のチェックボックスは入っていません。

xamlをみると、CanUserAddRowsとCanUserDeleteRowsを指定していません。

当然、デフォルトはCanではない(つまり、追加も削除もできない)と思ってしまいました。


Deleteキーで行が消えた!?

image.pngimage.png

行を指定してDeleteキーを押したら、行が消えてしまう!

しかも、なんか、データ2行しかないのに、データ追加用の行がある。


プロパティを設定してみる

↓ はじめの状況に対して、プロパティのCanUserDeleteRowsにチェックいれても、XAMLのコードに変化がないので、違和感を感じる。

image.png

↓ チェックを外してみると、XAMLのコードに変化が出た。

image.png

↓ もう一回、チェックを入れてみると、XAMLのコードから、CanUserDeleteRowsの設定コードが消えた!?

image.png

はじめの状況では、チェックなし=コードなしだったのに、

チェックを付けたり外したりしたら、チェックあり=コードなしに変わった。


結論

今の自分の開発環境しか確認していないが、

CanUserDeleteRowsとCanUserAddRowsの設定コードがない(=デフォルト値)の時、

プロジェクトの新規作成後とプロジェクトの読み込み後に、プロパティ表示が正しくないようだ。

再現性があるので、思い違いではないと思うのだが、、、。

ググっても出てこないので、、、最近からの不具合? それとも、みんな知っていすぎてWebに書かないからググっても出てこないのか?


補足

CanUserDeleteRows:DataGridに画面上の操作で行の削除ができるかできないかを設定するプロパティ

CanUserAddRows:DataGridに画面上の操作で行の追加ができるかできないかを設定するプロパティ