FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

DataGridCheckBoxColumnの使い勝手をどうにかしたい。

DataGridの列の一つであるDataGridCheckBoxColumnは、列にCheckBoxを表示する為のコントロールであるが、その使い勝手の悪さには定評がある。
何せ、ワンクリックでON/OFFが切り替わらない。
厳密にいうと、

  • カレントセル(黒枠付き)であれば、ワンクリックで切り替わる。

  • カレントセルになった(ほかのセルから移動してきた)だけでは、切り替わらない。

である。DataGridセルの標示モードと編集モードの性質上、そうならざるをえないとわかっているが、釈然としない。
で、今進行中の案件で、CheckBoxのスタイルを適用した際、意外にもちょっとしたことで上の問題を解消できる事を発見した。
<Style TargetType="CheckBox" x:Key="CheckBoxCellStyle"/>

あるいは
<Style TargetType="CheckBox" x:Key="CellCheckBoxStyle"
BasedOn="{StaticResource {x:Type CheckBox}}"/>

と定義し、CheckBoxColumnのElementStyleに設定するだけである。
<DataGridCheckBoxColumn Binding="{Binding Selected}"
ElementStyle="{StaticResource CheckBoxCellStyle}"
/>

これでワンクリックで切り替わる。シンプルだけど、いちいち設定するのかー。DataGridColumnシリーズは、結構特殊なコントロールなので、Theme.xamlとかにStyleを設定できないんだよなぁ。
なお、デフォルトと同じ動きさせようと思った時は、

<Style TargetType="CheckBox" x:Key="CellCheckBoxStyle"
BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="IsHitTestVisible" Value="false"/>
</Style>

とする。falseにしないほうが、日本人的には使い勝手が良いなぁ。
後、DataGridColumnコントロールは、ここを参照したらわかるけど、DependencyObjectを継承して実装されている。UIElementも、FrameworkElementでもない。故にLoadedイベントもないし、Styleは個別に設定する必要がある。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。