[WinUI3] WinUI3で表を使うために、CommunityToolkit.WinUI.UI.Controls の DataGridを試す

WinUI3のDataGridで表を作りたい。

DataGridはWindows Community Toolkitに含まれている。(WinAppSDKの元にはない)

https://github.com/CommunityToolkit/WindowsCommunityToolkit

Windows Community Toolkitの7.1.2が、WinAppSDKの1.0をサポートしているらしい。

https://devblogs.microsoft.com/ifdef-windows/windows-community-toolkit-for-project-reunion-0-5/

昔は、名前空間が「Microsoft.Toolkit.Uwp.*」だったのが、

WinUI3対応のために「CommunityToolkit.WinUI.*」になった。

???

CommunityToolkitは、「.NET Community Toolkit」に移行しようとしている??

2021/12/1時点で、CommunityToolkitの7.1.2がでて、これが最後になる??

最後のリリース?

https://github.com/CommunityToolkit/WindowsCommunityToolkit/releases/tag/winui-7.1.2

今後はこっち?

https://github.com/CommunityToolkit/dotnet

でも、CommunityToolkit Sample Appでは、UWP向けだが7.1.3も出てるとある。よくわからん、、、

下記ページが、WinUI3のDataGridの使い方としてはよさそう。

https://devlog.grapecity.co.jp/winui-3-datagrid-1/

やってみたら何となく動きはしたが、上のp-時にあるようなサンプルコードに、MSの公式のどこでたどり着けるのか??

<Window
    x:Class="DataGridTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:DataGridTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"
    mc:Ignorable="d">

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
        <controls:DataGrid x:Name="WinUI3DataGrid" />
    </StackPanel>
</Window>
using Microsoft.UI.Xaml;
using System.Collections.Generic;

namespace DataGridTest
{
    public sealed partial class MainWindow : Window
    {
        List<MyData> DataList { get; set; } = new List<MyData>();

        public MainWindow()
        {
            this.InitializeComponent();

            DataList.Add(new MyData("1", "AAA"));
            DataList.Add(new MyData("2", "BBBB"));
            DataList.Add(new MyData("3", "CCCCC"));

            WinUI3DataGrid.ItemsSource = DataList;
        }
    }

    public record MyData(string Name, string Value);

}

結果

上で見た「CommunityToolkit/WindowsCommunityToolkit」のリポジトリの、 mainではなく「rel/winui7.1.2」ブランチに、WinUI3用っぽいコード一式があった。

https://github.com/CommunityToolkit/WindowsCommunityToolkit/tree/rel/winui/7.1.2

最終的に

「CommunityToolkit.WinUI.UI.Controls」を使うことにした。

今回はテストツールのために使ったので凝った見た目にしたりはしてないが、普通に表として使う分には十分だった。

https://github.com/CommunityToolkit/WindowsCommunityToolkit
の「rel/winui7.1.2」ブランチに該当。