MESCIUS InputMan for WPF 3.0J > InputMan for WPF の使い方 > コンボコントロール > リストボックスの使い方 |
このトピックでは、コンボコントロールのリストボックス部分の使用方法について解説します。なお、リストボックス部分はデフォルトでが使用されており、ここではデフォルトの状態での使用方法を解説します。
リストボックス部分には、デフォルトでリストコントロールが使用されており、リストコントロールと同様の方法で項目を追加やスタイルの設定をすることができます。項目を設定するには、Items プロパティから取得できる項目コレクションに ListItem オブジェクトを追加する方法と、データバインディングを使用する方法があります。
コンボコントロールでドロップダウンされるリストボックスは、一列のみの表示と、各項目にサブ項目が設定された複数列での表示が可能です。リストボックスに一列のみ表示する場合は、UseMultipleColumn プロパティを False に設定します。デフォルトは True です。
(図):シングルカラムとマルチカラム
シングルカラムとマルチカラムのそれぞれの詳細については、以下のトピックを参照してください。
ドロップダウンリストが開いたときの幅を設定するには、DropDownWidth プロパティを使用する方法と DropDownWindowStyle プロパティを使用してスタイルを設定する方法があります。どちらにも値が設定されている場合、DropDownWidth プロパティの設定が優先されます。また、いずれもデフォルトの場合はコントロールの幅がドロップダウンリストの幅となります。
ドロップダウンリストが開いたときの高さを設定するには、DropDownWindowStyle プロパティを使用してスタイルを設定する方法のほか、 MaxDropDownHeight および MaxDropDownItems プロパティを使用する方法があります。これらのプロパティには下記の優先度があります。
DropDownWindowStyle プロパティによるスタイル設定 > MaxDropDownHeight プロパティ > MaxDropDownItems プロパティ |
スタイル設定の詳細については「スタイルを設定する」を参照してください。
なお、ドロップダウンリストがマウスによってリサイズされた場合にはリサイズ後のサイズが保持され、プロパティでの設定は無視されます。
次のサンプルコードは、コントロールの幅、ドロップダウンリストの幅、ドロップダウンリストに表示する最大項目数を設定します。
GcComboBox1.Width = 150 GcComboBox1.DropDownWidth = 200 GcComboBox1.MaxDropDownItems = 3
GcComboBox1.Width = 150; GcComboBox1.DropDownWidth = 200; GcComboBox1.MaxDropDownItems = 3;
<im:GcComboBox Width="150" DropDownWidth="200" MaxDropDownItems="3" />
リサイズバーのリサイズグリップをマウスでドラッグすることで、ユーザーによるリストボックスのサイズ変更が可能です。デフォルトではユーザーによるサイズ変更が許可されています。リサイズバーの背景色の設定や、ユーザーによるサイズ変更を禁止するには DropDownWindowStyle プロパティを使用してドロップダウンウィンドウのスタイルをカスタマイズします。 DropDownWindowStyle プロパティは Style 型で、コントロール単位で設定したり、リソースディクショナリのリソースとして宣言したりすることができます。ターゲットの型は ComboDropDownWindow です。
スタイル設定の詳細については「」を参照してください。
ComboDropDownWindow クラスを使用してドロップダウンウィンドウのスタイルをカスタマイズする場合、デフォルト値からの変更を行わない場合でも以下のプロパティは明示的に設定する必要があります。
|
以下のサンプルコードは、ユーザーによるリストボックスのサイズ変更を禁止します。
Imports GrapeCity.Windows.InputMan.Primitives Imports System.Windows.Media ' 新規スタイルオブジェクトを作成します。 Dim style As New Style(GetType(ComboDropDownWindow)) ' リサイズを禁止し、枠線の色と幅を指定します。 style.Setters.Add(new Setter(ComboDropDownWindow.AllowResizeProperty, False)) style.Setters.Add(new Setter(ComboDropDownWindow.BorderBrushProperty, New SolidColorBrush(Color.FromRgb(100, 100, 100)))) style.Setters.Add(new Setter(ComboDropDownWindow.BorderThicknessProperty, New Thickness(1))) ' ドロップダウンスタイルを割り当てます。 GcComboBox1.DropDownWindowStyle = style
using GrapeCity.Windows.InputMan.Primitives; using System.Windows.Media; // 新規スタイルオブジェクトを作成します。 var style = new Style(typeof(ComboDropDownWindow)); // リサイズを禁止し、枠線の色と幅を指定します。 style.Setters.Add(new Setter(ComboDropDownWindow.AllowResizeProperty, false)); style.Setters.Add(new Setter(ComboDropDownWindow.BorderBrushProperty, new SolidColorBrush(Color.FromRgb(100, 100, 100)))); style.Setters.Add(new Setter(ComboDropDownWindow.BorderThicknessProperty, new Thickness(1))); // ドロップダウンスタイルを割り当てます。 GcComboBox1.DropDownWindowStyle = style;
<!-- 以下の名前空間を追加する必要があります。 --> <!-- xmlns:imp="clr-namespace:GrapeCity.Windows.InputMan.Primitives;assembly=GrapeCity.WPF.InputMan" --> <im:GcComboBox> <im:GcComboBox.DropDownWindowStyle> <Style TargetType="imp:ComboDropDownWindow"> <Setter Property="AllowResize" Value="False" /> <Setter Property="BorderBrush" Value="#646464" /> <Setter Property="BorderThickness" Value="1" /> </Style> </im:GcComboBox.DropDownWindowStyle> </im:GcComboBox>