[.NET] ListViewにcheckboxを付ける

ListViewItemsがselectされたときにチェックが入るようにしたい。
最初に考えたのは、bool変数を追加してtrueのときにCheckが入るようにすればいい、ということだった。
変数を増やすのはバグも増やす可能性があるし、そもそも、不要なものなので他のやり方を調べた。

MSDNにはListViewの使用例がいくつかあり、その中にCheckboxを使う例があった。

その使用例では、itemのIsSelectedと連動するCheckboxを持つDataTemplateを定義し、これをGridViewColumnのtemplateとする。

How to: Create ListViewItems with a CheckBox
http://msdn.microsoft.com/en-us/library/ms754143.aspx

データ表示のためのDataTemplateをリソースとして作成

<DataTemplate x:Key="FirstCell">
<StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding Path=IsSelected,
      RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
</StackPanel>
</DataTemplate>

GridViewColumnにはDataTemplateクラスのCellTemplateプロパティが定義されている。

<GridView>
   <GridViewColumn CellTemplate="{StaticResource FirstCell}" Width="30"/>
   <GridViewColumn DisplayMemberBinding={Binding myitem} />
</GridView>

のようにして参照。

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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