SPREAD for WPF 3.0J - GcSpreadSheet
データテンプレート型セル
SPREAD for WPF 3.0J - GcSpreadSheet > 開発者ガイド > セル型 > データテンプレート型セル

データテンプレート型セルは、セルの編集時および非編集時の表示内容をデータ テンプレートでカスタマイズできるセル型です。DataTemplateCellType クラスを使用して設定します。主な設定は次のとおりです。

表示内容

セルの編集時の表示内容を表すデータテンプレートは EditElementTemplate プロパティに、セルの非編集時の表示内容を表すデータ テンプレートは DisplayElementTemplate プロパティに設定します。

次の図は、スプレッドシートにデータテンプレート型セルを示します。

次のサンプルコードはセルの編集時にテキストボックスを、セルの非編集時にプログレスバーを表示します。データ テンプレートに配置したコントロールをセルの値に連結するには WPF のデータ バインディングを使用します。編集時のデータテンプレートでは、双方向(TwoWay)のバインディングを設定します。

コードのコピー
<Window.Resources>
    <DataTemplate x:Key="DisplayElement">
        <ProgressBar Minimum="0" Maximum="100" Height="15" Width="60" Value="{Binding Value, FallbackValue=0, TargetNullValue=0}"/>
    </DataTemplate>
    <DataTemplate x:Key="EditElement">
        <TextBox Width="60" Text="{Binding Value, Mode=TwoWay}"/>
    </DataTemplate>
</Window.Resources>
<Grid>
    <gss:GcSpreadSheet x:Name="GcSpreadSheet" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <gss:GcSpreadSheet.Sheets>
            <gss:SheetInfo ColumnCount="20" RowCount="50">
                <gss:SheetInfo.Columns>
                    <gss:ColumnInfo>
                        <gss:ColumnInfo.CellType>
                            <CT:DataTemplateCellType DisplayElementTemplate="{StaticResource DisplayElement}"  EditElementTemplate ="{ StaticResource EditElement}" />
                        </gss:ColumnInfo.CellType>
                    </gss:ColumnInfo>
                </gss:SheetInfo.Columns>
            </gss:SheetInfo>
        </gss:GcSpreadSheet.Sheets>
    </gss:GcSpreadSheet>
</Grid>
コードのコピー
// DataTemplateCellTypeを設定します。
DataTemplate de = FindResource("DisplayElement") as DataTemplate;
DataTemplate ee = FindResource("EditElement") as DataTemplate;
DataTemplateCellType d = new DataTemplateCellType();
d.DisplayElementTemplate = de;
d.EditElementTemplate = ee;
GcSpreadSheet.Workbook.ActiveSheet.Columns[2].CellType = d;
コードのコピー
' DataTemplateCellTypeを設定します。
Dim de As DataTemplate = TryCast(FindResource("DisplayElement"), DataTemplate)
Dim ee As DataTemplate = TryCast(FindResource("EditElement"), DataTemplate)
Dim d As DataTemplateCellType = New DataTemplateCellType()
d.DisplayElementTemplate = de
d.EditElementTemplate = ee
GcSpreadSheet.Workbook.ActiveSheet.Columns(2).CellType = d