SilverlightのDataGridでチェックボックスのセルを表現したい場合は、通常DataGridCheckBoxColumn使用します。しかし、DataGridCheckBoxColumnは微妙に使い勝手良くありません。そこで、DataGridCheckBoxColumnを使わない方法を紹介します。
DataGridCheckBoxColumnのチェックボックスの挙動
DataGridCheckBoxColumnでチェックボックスカラムを定義するXAMLは下記のようになります。
<sdk:DataGrid x:Name="DgrSample" AutoGenerateColumns="False"> <sdk:DataGrid.Columns> <sdk:DataGridCheckBoxColumn Header="Check" Binding="{Binding IsTrue, Mode=TwoWay}"/> </sdk:DataGrid.Columns> </sdk:DataGrid>
DataGridTemplateColumnでチェックボックスカラムを作成
チェックボックスカラムを以下のような挙動にするために、DataGridTemplateColumnを使用します。
- ワンクリックでチェック状態を反転させる。
- チェック状態が変更されるたびにバインディングソースへ通知する。
XAMLの定義の仕方は以下の通りです。
<sdk:DataGridTemplateColumn IsReadOnly="True"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsTrue, Mode=TwoWay}" HorizontalAlignment="Center" VerticalAlignment="Center"/> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> </sdk:DataGridTemplateColumn>
これで、上記の挙動をもったチェックボックスカラムを実現できます。