[WPF] DataGridのCheckBoxを1クリックで操作したい

.NET Framework 4.0以降では縦横の格子状のデータ表示を行う DataGridクラスがある。3.5以前ではこのスプレッドシート風な表示はGridViewを使って実現していた。
DataGridはGridViewで「こんなことができたらなあ」というものがかなり入っている。たとえば、ヘッダをクリックしてソートする機能やセルの編集がデフォルトで入っており、ダブルクリックでセルのテキストが変更できる。セルではTextなどのほかにCheckBoxやComboBoxも使える。

DataGrid Class
http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.aspx

DataGridCheckBoxColumnにマウスでチェックを入れる動作は「編集」に相当するのでデフォルトではダブルクリックでチェックが入り、アンフォーカスで値がBinding先に反映される。
使ってみるとダブルクリックでチェックが入る動きは、通常のチェックボックスと異なるため意外に使いづらい。

ダブルクリックをシングルクリックに変更するやり方が以下のblogに紹介されていた。元の記事はSilverlightについてのエントリだが、WPFでも同様な方法で実装できる。

SilverlightのDataGridのセルのチェックボックスをワンクリックで反転できるようにする

codeplexにも同じ問題の別の解決方法が掲載されている。こちらは、cellstyleを使ってハンドラーを呼び出す。Styleのeventtrigerでハンドラを定義するのでやや面倒になる。

DataGrid Tips & Tricks: Single-Click Editing

stackoverflow.comでも同じ問題が何度か投稿されている。その中でもかなり多くの回答を集めているのが以下のスレッド。ここでは上記と同じ解決方法が回答されている。回答者はあまりにも簡単だと考えたためかコード例を投稿していない。

How to perform Single click checkbox selection in WPF DataGrid?

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。