SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

(16) DataGridコントロール WPF前編

  • X ポスト
  • このエントリーをはてなブックマークに追加

09.非スクロールの列数を設定する

 非スクロールの列数を設定するにはFrozenColumnCountプロパティを使用します。

 FrozenColumnCountプロパティには固定する列数を設定します。

 下記は非スクロールの列数を設定する例です。

 先頭から2列を非スクロール列に設定しています。水平スクロールバーは非スクロール列以降に表示されます。

非スクロールの列数を設定する例
非スクロールの列数を設定する例
XAMLの例
<DataGrid FrozenColumnCount="2">
 :省略
</DataGrid>

VBの例
'★★★非スクロールの列数を2に設定する★★★
CustomerDataGrid.FrozenColumnCount = 2
C#の例
// ★★★非スクロールの列数を2に設定する★★★
customerDataGrid.FrozenColumnCount = 2;
ポイント

 非スクロールの列数を設定するにはFrozenColumnColumnプロパティを使用する。

10.データの選択方法を設定する

 DataGridに表示されたデータはレコード単位、セル単位で選択することができます。

 選択方法は細かく設定することができ、レコード単位での選択方法はSelectionModeプロパティDataGridSelectionMode列挙体の値を設定し、セル単位での選択方法はSelectionUnitプロパティDataGridSelectionUnit列挙体の値を設定します。

DataGridSelectionMode列挙体
メンバー名 説明
Single 単一行を選択する
SelectionMode 複数行を選択する
DataGridSelectionUnit列挙体
メンバー名 説明
Cell セルのみを選択する
FullRow 行全体のみを選択する
CellOrRowHeader セルと行を選択する

 下記はデータの選択方法を設定する例です。

 各ラジオボタンの設定状況に合わせて、データの選択方法を変更します。

データの選択方法を設定する例
データの選択方法を設定する例
XAMLの例
<GroupBox Header="レコードの選択方法">
    <Grid>
        <RadioButton Content="単一行" Name="rdoSingle" />
        <RadioButton Content="複数行" Name="rdoExtended" />
    </Grid>
</GroupBox>
<GroupBox Header="セルの選択方法">
    <Grid>
        <RadioButton Content="セルのみ" Name="rdoCell" />
        <RadioButton Content="行のみ" Name="rdoFullRow" />
        <RadioButton Content="セルと行の両方" Name="rdoCellOrFullRow" />
    </Grid>
</GroupBox>
<DataGrid SelectionMode="Single" SelectionUnit="FullRow">
 :省略
</DataGrid>
VBの例
' レコードの選択方法を設定する 
Private Sub rdoSelectionMode_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles rdoExtended.Checked, rdoSingle.Checked
    If rdoSingle.IsChecked = True Then
        '★★★単一行のみを選択できるようにする★★★
        CustomerDataGrid.SelectionMode = DataGridSelectionMode.Single
    Else
        '★★★複数行を選択できるようにする★★★
        CustomerDataGrid.SelectionMode = DataGridSelectionMode.Extended
    End If
End Sub

' セルの選択方法を設定する
Private Sub rdoSelectionUnit_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles rdoCellOrFullRow.Checked, rdoFullRow.Checked, rdoCell.Checked
    If rdoCell.IsChecked = True Then
        '★★★セルのみを選択できるようにする★★★
        CustomerDataGrid.SelectionUnit = DataGridSelectionUnit.Cell
    ElseIf rdoFullRow.IsChecked = True Then
        '★★★行全体のみを選択できるようにする★★★
        CustomerDataGrid.SelectionUnit = DataGridSelectionUnit.FullRow
    Else
        '★★★セルと行を選択できるようにする★★★
        CustomerDataGrid.SelectionUnit = DataGridSelectionUnit.CellOrRowHeader
    End If
End Sub
C#の例
// レコードの選択方法を設定する
private void rdoSelectionMode_Checked(object sender, RoutedEventArgs e)
{
    if (rdoSingle.IsChecked == true)
    {
        // ★★★単一行のみを選択できるようにする★★★
        customerDataGrid.SelectionMode = DataGridSelectionMode.Single;
    }
    else
    {
        // ★★★複数行を選択できるようにする★★★
        customerDataGrid.SelectionMode = DataGridSelectionMode.Extended;
    }
}

// セルの選択方法を設定する
private void rdoSelectionUnit_Checked(object sender, RoutedEventArgs e)
{
    if (rdoCell.IsChecked == true)
    {
        // ★★★セルのみを選択できるようにする★★★
        customerDataGrid.SelectionUnit = DataGridSelectionUnit.Cell;
    }
    else if (rdoFullRow.IsChecked == true)
    {
        // ★★★行全体のみを選択できるようにする★★★
        customerDataGrid.SelectionUnit = DataGridSelectionUnit.FullRow;
    }
    else
    {
        // ★★★セルと行を選択できるようにする★★★
        customerDataGrid.SelectionUnit = DataGridSelectionUnit.CellOrRowHeader;
    }
}
ポイント

 データの選択方法を設定するには、SelectionModeプロパティやSelectionUnitプロパティを使用する。

まとめ

 DataGridコントロールには非常に多くの機能が備わっています。

 残念ながらすべての機能を紹介することができませんが、後編でも使用頻度の高そうなTipsを取り上げていきますのでお楽しみに。

 最後にDataGridのMSDNリンクを下記に示します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6005 2011/06/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング