2
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

Organization

【備忘録】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に画面上の操作で行の追加ができるかできないかを設定するプロパティ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?