「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.07.20
XML
カテゴリ: WPFC#.NET


C#のWPFアプリケーションで、`DataGrid`に表示される`DataTable`を特定のキー項目でグループ化して表示するには、`CollectionViewSource`を使用します。以下はそのサンプルコードです。


### 1. プロジェクトの作成

まず、新しいWPFアプリケーションプロジェクトをVisual Studioで作成します。


### 2. XAMLファイルの編集

`MainWindow.xaml`を編集して、`DataGrid`と`CollectionViewSource`を配置します。


```xml

<Window x:Class="WpfApp.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="DataTable Grouping Example" Height="350" Width="525">

    <Window.Resources>

        <!-- CollectionViewSource for grouping -->

        <CollectionViewSource x:Key="groupedData" />

    </Window.Resources>

    <Grid>

        <DataGrid ItemsSource="{Binding Source={StaticResource groupedData}}" AutoGenerateColumns="True" />

    </Grid>

</Window>

```


### 3. Code-Behindの編集

`MainWindow.xaml.cs`を編集して、`DataTable`を作成し、`CollectionViewSource`にグループ化情報を設定します。


```csharp

using System.Data;

using System.Windows;

using System.Windows.Data;


namespace WpfApp

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            LoadData();

        }


        private void LoadData()

        {

            // DataTableの作成

            DataTable dataTable = new DataTable();


            // 列の追加

            dataTable.Columns.Add("ID", typeof(int));

            dataTable.Columns.Add("Category", typeof(string));

            dataTable.Columns.Add("Name", typeof(string));

            dataTable.Columns.Add("Age", typeof(int));


            // 行の追加

            dataTable.Rows.Add(1, "Group A", "Alice", 25);

            dataTable.Rows.Add(2, "Group B", "Bob", 30);

            dataTable.Rows.Add(3, "Group A", "Charlie", 35);

            dataTable.Rows.Add(4, "Group B", "David", 28);

            dataTable.Rows.Add(5, "Group C", "Eve", 22);


            // CollectionViewSourceの取得

            CollectionViewSource collectionViewSource = (CollectionViewSource)this.Resources["groupedData"];


            // DataTableのDefaultViewを設定

            collectionViewSource.Source = dataTable.DefaultView;


            // グループ化設定

            collectionViewSource.GroupDescriptions.Add(new PropertyGroupDescription("Category"));

        }

    }

}

```


このコードでは、以下のことを行っています:

1. `DataTable`を作成してデータを追加。

2. XAMLで定義した`CollectionViewSource`に`DataTable`の`DefaultView`を設定。

3. `CollectionViewSource`にグループ化設定を追加(`PropertyGroupDescription`を使用して`Category`列でグループ化)。


これにより、`DataGrid`に表示されるデータが`Category`列でグループ化されます。サンプルコードを実行すると、`DataGrid`にデータがグループ化されて表示されるのが確認できます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.07.20 12:23:03


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: