ユーザーは次の方法でドロップダウン リストを展開できます。
ドロップダウン リストの主な機能は次のとおりです。
展開したドロップダウン リストで表示する項目の最大値を MaxDropDownItems プロパティで設定できます。なお、コンボボックス型セルはドロップダウン リストの高さの最大値を表す MaxDropDownHeight プロパティも提供しています。MaxDropDownHeight(高さの最大値)は、MaxDropDownItems(項目の最大値)より設定が優先されます。
ドロップダウン リストの幅は DropDownWidth プロパティで設定します。高さの最大値は MaxDropDownHeight プロパティで設定します。
ユーザーによるドロップダウン リストのリサイズを有効にできます。
ドロップダウン リストの機能を使用するには、ドロップダウン リストを表す ComboDropDownWindow のスタイルを設定します。
ドロップダウン リストにスタイルを設定するには、次の2つの方法があります。
それぞれの方法について説明します。
ComboDropDownWindow のスタイルを定義し x:Key 属性でキーを設定します。そして、コンボボックス型セルの DropDownWindowStyle プロパティでキーを指定してスタイルを参照します。
サンプルコードXAML |
コードのコピー
|
---|---|
<gss:GcSpreadSheet x:Name="GcSpreadSheet" HorizontalAlignment="Left" VerticalAlignment="Top"> <gss:GcSpreadSheet.Resources> <Style TargetType="gss: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"/> </gss:GcSpreadSheet.Resources> <gss:GcSpreadSheet.Sheets> <gss:SheetInfo RowCount="10" ColumnCount="5"> <gss:SheetInfo.Columns> <gss:ColumnInfo> <gss:ColumnInfo.CellType> <gss_CellType:ComboBoxCellType ItemsSource="{StaticResource ProductCollection}" ContentPath="Name" SelectedValuePath="ID"/> </gss:ColumnInfo.CellType> </gss:ColumnInfo> </gss:SheetInfo.Columns> </gss:SheetInfo> </gss:GcSpreadSheet.Sheets> </gss:GcSpreadSheet> |
次のサンプルコードは、コード ビハインドからスタイルを参照する例です。
C# |
コードのコピー
|
---|---|
ComboBoxCellType c = new ComboBoxCellType(); c.ItemsSource = new ProductCollection(); c.ContentPath = "Name"; c.SelectedValuePath = "ID"; c.DropDownWindowStyle = GcSpreadSheet.FindResource("MyComboBoxWindowStyle") as Style; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = c; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].ColumnWidth = 200; |
Visual Basic |
コードのコピー
|
---|---|
Dim c As ComboBoxCellType = New ComboBoxCellType() c.ItemsSource = New ProductCollection() c.ContentPath = "Name" c.SelectedValuePath = "ID" c.DropDownWindowStyle = TryCast(GcSpreadSheet.FindResource("MyComboBoxWindowStyle"), Style) GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = c GcSpreadSheet.Workbook.ActiveSheet.Columns(0).ColumnWidth = 200 |
ComboBoxEditElement のスタイルを x:Key 属性なしで定義します。この場合、スタイルを定義したリソースの対象範囲内のすべてのコンボボックス型セルにスタイルが暗黙的に適用されます。
サンプルコードXAML |
コードのコピー
|
---|---|
<gss:GcSpreadSheet x:Name="GcSpreadSheet" Grid.Row="1" Margin="0,0,232,214"> <gss:GcSpreadSheet.Resources> <Style TargetType="gss:ComboDropDownWindow" > <Setter Property="AllowResize" Value="True"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="BorderBrush" Value="Gray"/> <Setter Property="Background" Value="White"/> </Style> <local:ProductCollection x:Key="ProductCollection"/> </gss:GcSpreadSheet.Resources> <gss:GcSpreadSheet.Sheets> <gss:SheetInfo RowCount="10" ColumnCount="5"> <gss:SheetInfo.Columns> <gss:ColumnInfo Width="200"> <gss:ColumnInfo.CellType> <CustomCellType:ComboBoxCellType ItemsSource="{StaticResource ProductCollection}" ContentPath="Name" SelectedValuePath="ID"/> </gss:ColumnInfo.CellType> </gss:ColumnInfo> </gss:SheetInfo.Columns> </gss:SheetInfo> </gss:GcSpreadSheet.Sheets> </gss:GcSpreadSheet> |
グリッド線の色を HorizontalGridLineBrush および VerticalGridLineBrush プロパティで、線種を HorizontalGridLineStyle および VerticalGridLineStyle プロパティで設定できます。
1行おきの項目に、背景色を設定できます。最初の項目の背景色を ItemBackground プロパティで、AlternationCount プロパティで指定した行数おきに設定する背景色を AlternatingItemBackground プロパティで設定します。
サンプルコード
次のサンプルコードは、最初に AliceBlue、次に AntiqueWhite の順で交互に背景色を設定します。
C# |
コードのコピー
|
---|---|
ComboBoxCellType c = new ComboBoxCellType(); c.Items.Add("日本語"); c.Items.Add("韓国語"); c.Items.Add("中国語"); c.Items.Add("ドイツ語"); c.Items.Add("フランス語"); c.ItemBackground = new SolidColorBrush(Colors.AliceBlue); c.AlternatingItemBackground = new SolidColorBrush(Colors.AntiqueWhite); c.AlternationCount = 2; GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = c; |
Visual Basic |
コードのコピー
|
---|---|
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim c As ComboBoxCellType = New ComboBoxCellType() c.Items.Add("日本語") c.Items.Add("韓国語") c.Items.Add("中国語") c.Items.Add("ドイツ語") c.Items.Add("フランス語") c.ItemBackground = New SolidColorBrush(Colors.AliceBlue) c.AlternatingItemBackground = New SolidColorBrush(Colors.AntiqueWhite) c.AlternationCount = 2 GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = c End Sub |