SPREAD for WPF 4.0J - GcSpreadGrid
ドロップダウン リスト
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > セル型 > コンボボックス型セル > ドロップダウン リスト

ユーザーは次の方法でドロップダウン リストを展開できます。

ドロップダウン リストの主な機能は次のとおりです。

最大表示項目数

展開したドロップダウン リストで表示する項目の最大値を MaxDropDownItems プロパティで設定できます。なお、コンボボックス型セルはドロップダウン リストの高さの最大値を表す MaxDropDownHeight プロパティも提供しています。MaxDropDownHeight(高さの最大値)は、MaxDropDownItems(項目の最大値)より設定が優先されます。

ドロップダウン リストの幅と高さ

ドロップダウン リストの幅は DropDownWidth プロパティで設定します。高さの最大値は MaxDropDownHeight プロパティで設定します。

ユーザーによるリサイズ

ユーザーによるドロップダウン リストのリサイズを有効にできます。

リサイズ

ドロップダウン リストの機能を使用するには、ドロップダウン リストを表す ComboDropDownWindow のスタイルを設定します。

ここで言う「スタイル」は WPF のスタイルです。XAML で記述します。

ドロップダウン リストにスタイルを設定するには、次の2つの方法があります。

それぞれの方法について説明します。

スタイルをキーで参照

ComboDropDownWindow のスタイルを定義し x:Key 属性でキーを設定します。そして、コンボボックス型セルの DropDownWindowStyle プロパティでキーを指定してスタイルを参照します。

サンプルコード
xaml
コードのコピー
<sg:GcSpreadGrid>
    <sg:GcSpreadGrid.Resources>
        <Style TargetType="sg:ComboDropDownWindow" x:Key="MyComboBoxWindowStyle" >
            <Setter Property="AllowResize" Value="True"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="Gray"/>
            <Setter Property="Background" Value="White"/>
        </Style>
        <localdb:ProductCollection x:Key="ProductCollection"/>
    </sg:GcSpreadGrid.Resources>
    <sg:GcSpreadGrid.Columns>
        <sg:Column>
            <sg:Column.CellType>
                <sg:ComboBoxCellType ItemsSource="{StaticResource ProductCollection}" ContentPath="Name" SelectedValuePath="ID"
                    DropDownWindowStyle="{StaticResource MyComboBoxWindowStyle}"/>
            </sg:Column.CellType>
        </sg:Column>
    </sg:GcSpreadGrid.Columns>
</sg:GcSpreadGrid>

次のサンプルコードは、コード ビハインドからスタイルを参照する例です。

C#
コードのコピー
ComboBoxCellType c=new ComboBoxCellType();
c.ItemsSource=new ProductCollection();
c.ContentPath="Name";
c.SelectedValuePath="ID";
c.DropDownWindowStyle = gcSpreadGrid1.FindResource("MyComboBoxWindowStyle") as Style;
gcSpreadGrid1.Columns[0].CellType = c;
Visual Basic
コードのコピー
Dim c As New ComboBoxCellType()
c.ItemsSource = New ProductCollection()
c.ContentPath = "Name"
c.SelectedValuePath = "ID"
c.DropDownWindowStyle = TryCast(gcSpreadGrid1.FindResource("MyComboBoxWindowStyle"), Style)
gcSpreadGrid1.Columns(0).CellType = c

スタイルを暗黙的に適用

ComboBoxEditElement のスタイルを x:Key 属性なしで定義します。この場合、スタイルを定義したリソースの対象範囲内のすべてのコンボボックス型セルにスタイルが暗黙的に適用されます。

サンプルコード
xaml
コードのコピー
<sg:GcSpreadGrid>
    <sg:GcSpreadGrid.Resources>
        <Style TargetType="sg:ComboBoxEditElement">
            <Setter Property="DropDownWindowStyle">
                <Setter.Value>
                    <Style TargetType="sg:ComboDropDownWindow">
                        <Setter Property="AllowResize" Value="True"/>
                        <Setter Property="BorderThickness" Value="1"/>
                        <Setter Property="BorderBrush" Value="Gray"/>
                        <Setter Property="Background" Value="White"/>
                    </Style>
                </Setter.Value>
            </Setter>
        </Style>
        <localdb:ProductCollection x:Key="ProductCollection"/>
    </sg:GcSpreadGrid.Resources>
    <sg:GcSpreadGrid.Columns>
        <sg:Column>
            <sg:Column.CellType>
                <sg:ComboBoxCellType ItemsSource="{StaticResource ProductCollection}" ContentPath="Name" SelectedValuePath="ID"/>
            </sg:Column.CellType>
        </sg:Column>
    </sg:GcSpreadGrid.Columns>
</sg:GcSpreadGrid>

グリッド線

グリッド線の色を HorizontalGridLineBrush および VerticalGridLineBrush プロパティで、線種を HorizontalGridLineStyle および VerticalGridLineStyle プロパティで設定できます。

1行おきに背景色

1行おきの項目に、背景色を設定できます。最初の項目の背景色を ItemBackground プロパティで、AlternationCount プロパティで指定した行数おきに設定する背景色を AlternatingItemBackground プロパティで設定します。

サンプルコード 次のサンプルコードは、最初に AliceBlue、次に AntiqueWhite の順で交互に背景色を設定します。
C#
コードのコピー
ComboBoxCellType c = new ComboBoxCellType();
c.Items.Add("日本語");
c.Items.Add("英語");
c.Items.Add("中国語");
c.ItemBackground = new SolidColorBrush(Colors.AliceBlue);
c.AlternatingItemBackground = new SolidColorBrush(Colors.AntiqueWhite);
c.AlternationCount = 2;
gcSpreadGrid1.Columns[0].CellType = c;
Visual Basic
コードのコピー
Dim c As New ComboBoxCellType()
c.Items.Add("日本語")
c.Items.Add("英語")
c.Items.Add("中国語")
c.ItemBackground = New SolidColorBrush(Colors.AliceBlue)
c.AlternatingItemBackground = New SolidColorBrush(Colors.AntiqueWhite)
c.AlternationCount = 2       
GcSpreadGrid1.Columns(0).CellType = c
関連トピック