SimpleListBox および SimpleListBoxItem
リスト ボックスは、スクロール可能な一覧として表示されるアイテム コントロールです。Microsoft Expression Blend でリスト ボックスにコンテンツを配置するには、リスト ボックスをダブルクリックして要素 (四角形など) を描画します。または、[オブジェクトとタイムライン] パネルでリスト ボックスを右クリックし、[SimpleListBoxItem の追加] をクリックしてコレクションに各アイテムを追加するか、[ItemsSource をデータにバインド] をクリックして、データソースから [SimpleListBoxItem] 要素のコレクションを生成します。コレクションに個別のアイテムを追加する場合、リスト ボックスをダブルクリックしてアクティブにし、アイテムをドラッグして目的の位置に移動することにより、アイテムの順序を変更できます。リスト ボックスの [SelectedIndex] プロパティを使用して、既定で選択されるアイテムを設定できます。
アイテムが 2 つ追加された後の [SimpleListBox] コントロールのアートボード ビュー
コントロール テンプレートの構成要素
SimpleListBox コントロール テンプレートには、次のアイテムが含まれます。
Grid パネル : リスト ボックス内に複数の子要素を保持するために使用します。また、[Grid] パネルを使用すると、テンプレートに複数の要素を簡単に追加できるので便利です。
Border 要素 : [BorderThickness] プロパティが含まれています。このプロパティは、このテンプレートの適用先リスト ボックス コントロールの [BorderThickness] プロパティにテンプレート バインドできます。
ScrollViewer 要素 : リストが長い場合に、アプリケーションのユーザーがリストをスクロールできるようにするために使用します。
StackPanel : [ScrollViewer] 要素内に含まれ、アイテムを配置します。[StackPanel] の [IsItemsHost] プロパティは [True] に設定され、[ScrollViewer] が、このテンプレートが適用されるリスト ボックス コントロールのアイテムを表示する要素であることが識別されます。[StackPanel] を [UniformGrid] などの別のパネル要素に変更するには、[オブジェクトとタイムライン] パネルで [StackPanel] 要素を右クリックし、[レイアウトの種類の変更] を選択します。
SimpleListBoxItem コントロール テンプレートには、次のアイテムが含まれます。
Grid パネル : リスト ボックスのアイテム内に複数の子要素を保持するために使用します。また、[Grid] パネルを使用すると、テンプレートに複数の要素を簡単に追加できるので便利です。
Border 要素 : [BorderThickness] プロパティが含まれています。このプロパティは、このテンプレートの適用先ボタン コントロールの [BorderThickness] プロパティにテンプレート バインドできます。
ContentPresenter 要素 : [Grid] 要素内に含まれ、このテンプレートが適用されるアイテム コントロールの [Content] プロパティに自動的にバインドされます。
オブジェクト ビュー : [SimpleListBox] コントロール (左) および [SimpleListBoxItem] コントロール (右) の基本パーツ (テンプレート)
使用されるプロパティ トリガー
コントロール テンプレートのプロパティ トリガーは、プロパティの変更にコントロールを対応させるために使用されます。[トリガー] パネルのアイテムをクリックすると、トリガーがアクティブになると変更されるプロパティを表示できます。たとえば、リスト ボックス用のテンプレートでは、リスト ボックス アイテムの [IsSelected] プロパティが [True] のときに、アイテムの背景色が変更されます。リスト ボックス アイテム用のテンプレートでは、[IsHighlighted] プロパティが [True] のときに、Border 要素の [Background] プロパティが変更され、リスト ボックス内で選択されたアイテムを示します。
使用されるブラシ
SimpleListBox および SimpleListBoxItem テンプレートでは、SimpleStyles.xaml リソース ディクショナリの次に示すブラシ リソースが使用されます。
[Background] プロパティは、アクティブなトリガーが存在しないときは [WindowBackgroundBrush] を使用して設定され、[IsEnabled] が [False] のときは [DisabledBackgroundBrush] を使用して設定されます。
[BorderBrush] プロパティは、アクティブなトリガーが存在しないときは [SolidBorderBrush] を使用して設定され、[IsEnabled] が [False] のときは [DisabledBorderBrush] を使用して設定されます。
[SimpleListBox] に [SimpleListBoxItem] テンプレートを使用するアイテムを実装する場合、アイテムの [Background] プロパティは、アイテムの選択時に [SelectedBackgroundBrush] を使用して設定され、[Foreground] プロパティは、[IsEnabled] が [False] の場合に [DisabledForgroundBrush] を使用して設定されます。