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

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

2024.03.18
XML
カテゴリ: C#.NET


C# WPFの`DataGrid`内に`DataGrid`を表示する場合、ネストされたデータグリッドを実装する必要があります。以下は、そのサンプルコードです。


まず、MainWindow.xamlにメインのDataGridとして使用するDataGridを配置します。


```xml

<Window x:Class="NestedDataGrid.MainWindow"

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

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

        Title="Nested DataGrid Sample" Width="800" Height="600">

    <Grid>

        <DataGrid x:Name="mainDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Items}" >

            <DataGrid.Columns>

                <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>

                <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>

                <!-- 他の列をここに追加 -->

                <DataGridTemplateColumn Header="Sub DataGrid">

                    <DataGridTemplateColumn.CellTemplate>

                        <DataTemplate>

                            <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding SubItems}">

                                <DataGrid.Columns>

                                    <DataGridTextColumn Header="Sub ID" Binding="{Binding SubID}"/>

                                    <DataGridTextColumn Header="Sub Name" Binding="{Binding SubName}"/>

                                    <!-- 他の列をここに追加 -->

                                </DataGrid.Columns>

                            </DataGrid>

                        </DataTemplate>

                    </DataGridTemplateColumn.CellTemplate>

                </DataGridTemplateColumn>

            </DataGrid.Columns>

        </DataGrid>

    </Grid>

</Window>

```


次に、MainWindow.xaml.csにメインのDataGridに表示するデータを用意し、DataContextを設定します。


```csharp

using System.Collections.Generic;

using System.Windows;


namespace NestedDataGrid

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            DataContext = new ViewModel();

        }

    }


    public class Item

    {

        public int ID { get; set; }

        public string Name { get; set; }

        public List<SubItem> SubItems { get; set; }

    }


    public class SubItem

    {

        public int SubID { get; set; }

        public string SubName { get; set; }

    }


    public class ViewModel

    {

        public List<Item> Items { get; set; }


        public ViewModel()

        {

            Items = new List<Item>

            {

                new Item { ID = 1, Name = "Item 1", SubItems = new List<SubItem> { new SubItem { SubID = 11, SubName = "SubItem 11" }, new SubItem { SubID = 12, SubName = "SubItem 12" } } },

                new Item { ID = 2, Name = "Item 2", SubItems = new List<SubItem> { new SubItem { SubID = 21, SubName = "SubItem 21" }, new SubItem { SubID = 22, SubName = "SubItem 22" } } },

                // 他のアイテムをここに追加

            };

        }

    }

}

```


このコードでは、メインの`DataGrid`に表示する`Item`クラスと、サブの`DataGrid`に表示する`SubItem`クラスを定義しています。そして、`ViewModel`クラス内でデータを用意し、`DataContext`として設定しています。


これにより、メインの`DataGrid`内にサブの`DataGrid`が表示されるネストされたデータグリッドが実装されます。






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

Last updated  2024.03.18 07:27:15


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

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: