SHOEISHA iD

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

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

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

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

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

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

03.グループ化のスタイルを設定する

 先ほどのTipsでは項目をグループ化する方法について説明しましたが、グループ化の節目はデータを見なければ知ることができません。そこで、グループごとに折りたためるようにスタイルを設定する例を紹介します。

 DataGridはGroupStyleというプロパティを持っており、この中で折りたたみのスタイルを作成します。折りたたみには<Expander>を使用し、ヘッダー部分は<Expander.Header>で、データ部分は<Expander.Content>で定義します。

 下記は、グループ化のスタイルを設定する例です。Title列でグルーピングしており、「Mr.」「Sr.」「Sra.」といった単位で折りたたみができるようになります。

 データ量が多い場合、グループ化にスタイルを設定すると表示までに時間が掛かるので注意してください。

グループ化のスタイルを設定する例
グループ化のスタイルを設定する例
XAMLの例
<Window.Resources>
  <my:CustomerDS x:Key="CustomerDS" />
  <CollectionViewSource x:Key="CustomerViewSource" 
    Source="{Binding Path=Customer, Source={StaticResource CustomerDS}}">
    <CollectionViewSource.GroupDescriptions>
      <!-- ★★★Title列をグループ化★★★ -->
      <PropertyGroupDescription PropertyName="Title" />
    </CollectionViewSource.GroupDescriptions>
  </CollectionViewSource>
</Window.Resources>
<DataGrid>
  <!-- ★★★グルーピングのスタイル設定 ここから★★★ -->
  <DataGrid.GroupStyle>
    <GroupStyle>
      <GroupStyle.ContainerStyle>
        <Style TargetType="{x:Type GroupItem}">
          <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupItem}">
              <Expander>
                <Expander.Header>
                  <DockPanel>
                    <TextBlock Text="Title" />
                  </DockPanel>
                </Expander.Header>
                <Expander.Content>
                  <ItemsPresenter />
                </Expander.Content>
              </Expander>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </GroupStyle.ContainerStyle>
  </GroupStyle>
</DataGrid.GroupStyle>
<!-- ★★★グルーピングのスタイル設定 ここまで★★★ -->
ポイント

 グループ化のスタイルを設定するにはGroupStyleを使用する。

04.データを並び替えを禁止する

 既定では、DataGridのヘッダーをクリックすることでデータの並べ替えを行うことが可能になっています。

 データの並べ替えを禁止したい場合は、CanUserSortColumnsプロパティにFalseを設定します。

 下記は、データの並べ替えを禁止する例です。チェックボックス[並べ替えを許可]のチェック状態に合わせて、並べ替えの有効/無効を切り替えます。

データの並べ替えを禁止する例
データの並べ替えを禁止する例
XAMLの例
<DataGrid CanUserSortColumns="False">
:省略
</DataGrid>
VBの例
' [並べ替えを許可]チェック時の処理
Private Sub chkSortEnable_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkSortEnable.Checked
    '★★★並べ替えを有効にする★★★
    CustomerDataGrid.CanUserSortColumns = True
End Sub

' [並べ替えを許可]チェックオフ時の処理
Private Sub chkSortEnable_Unchecked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkSortEnable.Unchecked
    '★★★並べ替えを無効にする★★★
    CustomerDataGrid.CanUserSortColumns = False
End Sub
C#の例
// [並べ替えを許可]チェック時の処理
private void chkSortEnable_Checked(object sender, RoutedEventArgs e)
{
    // ★★★並べ替えを有効にする★★★
    customerDataGrid.CanUserSortColumns = true;
}

// [並べ替えを許可]チェックオフ時の処理
private void chkSortEnable_TouchUp(object sender, TouchEventArgs e)
{
    // ★★★並べ替えを無効にする★★★
    customerDataGrid.CanUserSortColumns = false;
}
ポイント

 データの並べ替えを禁止するにはCanUserSortColumnsプロパティにFalseを設定する。

次のページ
05.並べ替え可能な列を限定する

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

  • 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/6006 2011/06/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング