WPF > コンポーネント > コントロール > チェックボックスリストボックス


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

aaあああ

ListBoxには各項目をレンダリングするテンプレートの設定が行えるItemContainerStyleプロパティにレンダリング用のコントロールを与えればチェックボックスを持つListBoxが実現できます。

XAMLのサンプル

CheckBoxItemStyle.xamlを作成し、そこにItemsContainerStyleを設置したスタイルを定義します。

チェックボックスを持つListBoxの性質として複数の項目が選択可能なものにしたいので、CheckedListBoxStyleスタイルを設定したListBoxには強制的にListBox.SelectionModeに「Multiple」を設定するようにしています。

使用するCheckBoxにはさらにContentTemplateを設定しています。
CheckBox要素の子要素にはContentPresenter要素を使用して本来CheckBox自身が定義しているレンダリングを使用しています。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
	<Style x:Key="CheckedListBoxStyle" TargetType="{x:Type ListBox}">
		<Setter Property="SelectionMode" Value="Multiple" />
		<Setter Property="ItemContainerStyle">
			<Setter.Value>
				<Style TargetType="{x:Type ListBoxItem}">
					<Setter Property="Template">
						<Setter.Value>
							<ControlTemplate TargetType="{x:Type ListBoxItem}">
								<CheckBox 
								IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Selector.IsSelected)}">
									<ContentPresenter />
								</CheckBox>
							</ControlTemplate>
						</Setter.Value>
					</Setter>
				</Style>
			</Setter.Value>
		</Setter>
	</Style>
 
</ResourceDictionary>

チェックボックスを持つListBoxを作成するには、上記のリソースディクショナリーファイルを読み込み、ListBoxにスタイルを定義します。

<Window.Resources>
	<ResourceDictionary Source="./CheckBoxItemStyle.xaml" />
</Window.Resources>
 
 
<ListBox Height="227" HorizontalAlignment="Left" Margin="0" Name="listBox1" VerticalAlignment="Top" Width="243
	 Style="{StaticResource CheckedListBoxStyle}" />

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集