CodeZine(コードジン)

特集ページ一覧

Silverlight/WPFで使える逆引きTips集
――DataGrid機能(WPF後編)

(17) DataGridコントロール WPF後編

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/06/28 14:00
目次

07.独自の列を追加する

 DataGridには既定の列の型として下表のものがあります。

既定の列の型
列の種類 説明
DataGridTextColumn テキストを表示
DataGridHyperlinkColumn URIデータを表示
DataGridComboBoxColumn 列挙型のデータを表示
DataGridCheckBoxColumn ブール型のデータを表示

 この他、<DataGridTemplateColumn>を使用することで独自の列を追加することができます。

 下記は独自の列を追加する例です。<DataGridTemplateColumn>を使用してButtonコントロールを表示するようにしています。ButtonコントロールなのでClickイベントを利用することが可能です。

項目の列を追加する例
項目の列を追加する例
XAMLの例
<DataGrid>
    <DataGrid.Columns>
    :
    :省略
    :
        <!--★★★[更新]ボタン列 ここから★★★-->
        <DataGridTemplateColumn Header="更新">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="更新" x:Name="btnUpdate"
                        Click="btnUpdate_Click"></Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <!--★★★[更新]ボタン列 ここまで★★★-->

        <!--★★★[削除]ボタン列★★★-->
        <DataGridTemplateColumn Header="削除">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="削除" x:Name="btnDelete"
                        Click="btnDelete_Click"></Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <!--★★★[削除]ボタン列 ここまで★★★-->
    </DataGrid.Columns>
</DataGrid>
VBの例
' [更新]ボタンクリック時の処理
Private Sub btnUpdate_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
    MessageBox.Show("[更新]ボタンが押されました")
End Sub

' [削除]ボタンクリック時の処理
Private Sub btnDelete_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
    MessageBox.Show("[削除]ボタンが押されました")
End Sub
C#の例
// [更新]ボタンクリック時の処理
private void btnUpdate_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("[更新]ボタンが押されました");
}

// [削除]ボタンクリック時の処理
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("[削除]ボタンが押されました");
}
ポイント

 独自の列を追加するには<DataGridTemplateColumn>を利用する。

08.データの編集が開始/終了されたことを知る

  DataGridには下表に示すように、データの編集が開始/終了されたことを知るためのイベントが備わっています。データ編集の開始/終了のタイミングで何かしらの操作を行いたい場合には、これらのイベントを利用します。

データの開始/終了用イベント
イベント イベント発生タイミング
BeginningEdit セルの編集開始時
CellEditEnding セルの編集終了時
RowEditEnding 行の編集終了時

 下記はデータの編集が開始/終了されたことを知る例です。データ編集の開始や終了を、DataGridの下にあるTextBlockへ表示します。

データの編集が開始/終了されたことを知る例
データの編集が開始/終了されたことを知る例
XAMLの例
<DataGrid BeginningEdit="customerDataGrid_BeginningEdit" 
                CellEditEnding="customerDataGrid_CellEditEnding" 
                RowEditEnding="customerDataGrid_RowEditEnding">
 :省略
</DataGrid>
<TextBlock Name="textBlock1" Background="LightSkyBlue" />

VBの例
' セルの編集開始時の処理
Private Sub CustomerDataGrid_BeginningEdit(sender As System.Object, e As System.Windows.Controls.DataGridBeginningEditEventArgs) Handles CustomerDataGrid.BeginningEdit
    TextBlock1.Text = "編集が開始されました"
End Sub

' セルの編集終了時の処理
Private Sub CustomerDataGrid_CellEditEnding(sender As System.Object, e As System.Windows.Controls.DataGridCellEditEndingEventArgs) Handles CustomerDataGrid.CellEditEnding
    TextBlock1.Text = "セルの編集が終了しました"
End Sub

' 行の編集終了時の処理
Private Sub CustomerDataGrid_RowEditEnding(sender As System.Object, e As System.Windows.Controls.DataGridRowEditEndingEventArgs) Handles CustomerDataGrid.RowEditEnding
    TextBlock1.Text = "行の編集が終了しました"
End Sub
C#の例
// セルの編集開始時の処理
private void customerDataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
    textBlock1.Text = "編集が開始されました";
}

// セルの編集終了時の処理
private void customerDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    textBlock1.Text = "セルの編集が終了しました";
}

// 行の編集終了時の処理
private void customerDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    textBlock1.Text = "行の編集が終了しました";
}
ポイント

 DataGridの編集開始/終了を知るには、専用のイベントを利用する。

まとめ

  前編、後編とWPFにおけるDataGridのTipsを取り上げました。DataGridは多くの機能を持っており、紹介したTipsはごく一部でしかありません。さらなる機能について興味がある方は、ぜひ下記のMSDNのリンクを参照ください。

 次回はSilverlightのDataGridに関するTIpsをお届けする予定です。どうぞお楽しみに。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Silverlight/WPFで使える逆引きTips集

もっと読む

著者プロフィール

  • HIRO(ヒロ)

    HIRO's.NETのHIROです。 とある半導体工場のSEです。 VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。 最近はBlog でPowerShellについて書いています。 2008/07/07にPowerShell from Japan!!という...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5