DataGrid for WPF/Silverlight
自動生成された列のカスタマイズ
製品の概要 > 選択モードの設定 > 自動生成された列のカスタマイズ

列が自動生成される場合も列のカスタマイズは可能です。AutoGenerateColumns プロパティを True に設定し、列が自動生成されたら、生成された列の表示方法をコードでカスタマイズできます。それには、C1DataGrid.AutoGeneratingColumn イベントを制御します。

AutoGeneratingColumn イベントハンドラの追加

次の手順に従って、AutoGeneratingColumn イベントハンドラを追加します。

  1. コードビューに切り替え、AutoGeneratingColumn イベントのイベントハンドラを追加します。たとえば、次のようになります。
    Visual Basic
    コードのコピー
    Private Sub C1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles C1DataGrid1.AutoGeneratingColumn
        ' コードをここに追加します。
    End Sub
    

    C#
    コードのコピー
    private void C1DataGrid1_AutoGeneratingColumn(object sender, C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
    {
        // コードをここに追加します。
    }
    
    Visual Basic
    コードのコピー
    Private Sub c1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.Silverlight.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles c1dg.AutoGeneratingColumn
        ' コードをここに追加します。
    End Sub
    

    C#
    コードのコピー
    private void c1DataGrid1_AutoGeneratingColumn(object sender, C1.Silverlight.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
    {
        // コードをここに追加します。
    }
    

  2. ソースビューに切り替え、イベントハンドラを C1DataGrid コントロールのインスタンスに追加します。たとえば、次のようになります。
    XAML
    コードのコピー
    <datagrid:C1DataGrid x:Name="c1DataGrid1" AutoGenerateColumns="True" AutoGeneratingColumn=" c1DataGrid1_AutoGeneratingColumn"></datagrid:C1DataGrid>
    

これで、自動生成された列の外観と動作をカスタマイズするためのコードを AutoGeneratingColumn イベントハンドラに追加できます。以下は、列の書式設定と動作をカスタマイズする例です。

列生成のキャンセル

特定の列の生成を AutoGeneratingColumn イベントでキャンセルできます。たとえば、次のコードを使用して、グリッド内のブール値列の生成をキャンセルできます。

Visual Basic
コードのコピー
Private Sub C1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles C1DataGrid1.AutoGeneratingColumn
    ' すべてのブール値列の自動生成をキャンセルします。
    If e.Property.PropertyType Is GetType(Boolean) Then
        e.Cancel = True
    End If
End Sub

C#
コードのコピー
private void c1DataGrid1_AutoGeneratingColumn(object sender, C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
{
    // すべてのブール値列の自動生成をキャンセルします。
    if (e.Property.PropertyType == typeof(bool))
        e.Cancel = true;
}

Visual Basic
コードのコピー
Private Sub c1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.Silverlight.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles c1dg.AutoGeneratingColumn
    ' すべてのブール値列の自動生成をキャンセルします。
    If e.Property.PropertyType Is GetType(Boolean) Then
        e.Cancel = True
    End If
End Sub

C#
コードのコピー
private void c1DataGrid1_AutoGeneratingColumn(object sender, C1.Silverlight.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
{
    // すべてのブール値列の自動生成をキャンセルします。
    if (e.Property.PropertyType == typeof(bool))
        e.Cancel = true;
}

列ヘッダーの変更

AutoGeneratingColumn イベントで、自動生成された列のヘッダーに表示されるテキストを変更できます。たとえば、次のコードを使用すると、列に「名前」というヘッダーが表示されるように「商品名」列を変更できます。

コードのコピー
Private Sub C1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles C1DataGrid1.AutoGeneratingColumn
    '「商品名」列のヘッダーを変更します。
    If e.Column.Header.ToString() = "ProductName" Then
         e.Header = "名前"
    End If
End Sub
コードのコピー
private void c1DataGrid1_AutoGeneratingColumn(object sender, C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
{
    // 「商品名」列のヘッダーを変更します。
    if (e.Column.Header.ToString() == "ProductName")
        e.Column.Header = "名前";
}

列操作の禁止

AutoGeneratingColumn イベントを使用して、生成された特定の列に対してエンドユーザーが実行できる操作を変更できます。たとえば、次のコードを使用すると、ユーザーが読み取り専用の列を移動することを禁止できます。

コードのコピー
Private Sub C1DataGrid1_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs) Handles C1DataGrid1.AutoGeneratingColumn
    ' 「商品名」列のヘッダーを変更します。
    If e.Column.IsReadOnly = True Then
       e.Column.CanUserMove = False
    End If
End Sub
コードのコピー
private void c1DataGrid1_AutoGeneratingColumn(object sender, C1.WPF.DataGrid.DataGridAutoGeneratingColumnEventArgs e)
{
    // 「商品名」列のヘッダーを変更します。
    if (e.Column.IsReadOnly == true)
        e.Column.CanUserMove = false;
}