--- lang: ja-jp breaks: true --- # WinUI 3 で `DataGrid` ※`WindowsCommunityToolkit` を使用する 2022-07-26 > WinUI 3のデータグリッドを試してみる(1) > https://devlog.grapecity.co.jp/winui-3-datagrid-1/ ## 実行結果 ![](https://i.imgur.com/b6UdWvN.png) ## csproj ```xml= <Project Sdk="Microsoft.NET.Sdk"> ・・・ <ItemGroup> <PackageReference Include="CommunityToolkit.WinUI.UI.Controls" Version="7.1.2" /> <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.220727.1-experimental1" /> <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.25182-preview" /> </ItemGroup> ・・・ </Project> ``` ## MainWindow.xaml ```xaml= <Window x:Class="App25.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App25" xmlns:helpers="using:App25.helpers" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:viewModels="clr-namespace:App25.viewModels" xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls" > <Grid Background="{ThemeResource AcrylicBackgroundFillColorDefaultBrush}" > ・・・ <controls:DataGrid BorderThickness="1" IsReadOnly="True" ItemsSource="{x:Bind ViewModel.PackagesList, Mode=OneWay}" AutoGenerateColumns="true" > </controls:DataGrid> ・・・ </Grid> </Window> ``` ## MainWindow.xaml.cs ```csharp= namespace App25; public sealed partial class MainWindow : Window { private MainWindowViewModel ViewModel { get; init; } public MainWindow() { this.InitializeComponent(); ViewModel = new MainWindowViewModel(); } } ``` ## MainWindowViewModel.cs ```csharp= internal sealed class MainWindowViewModel: INotifyPropertyChanged { public async Task UpdateNugetPackagesListAsync() { ・・・ PackagesList = new( packages.Select( (n, i) => new GithubPackagesModel( row : i + 1, id : n.Id , name : n.Name , package_type : n.Package_type , version_count: n.Version_count, visibility : n.Visibility , url : n.Url , created_at : n.Created_at , updated_at : n.Updated_at , html_url : n.Html_url ) ) .ToList() ); } private List<GithubPackagesModel> m_packagesList; public List<GithubPackagesModel> PackagesList { get { return this.m_packagesList; } set { if (value == this.m_packagesList) { return; } this.m_packagesList = value; OnPropertyChanged(nameof(PackagesList)); } } public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged_PackagesList; private void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); switch (propertyName) { case nameof(PackagesList): PropertyChanged_PackagesList?.Invoke(this, new PropertyChangedEventArgs(propertyName)); break; } } } ``` ###### tags: `WinUI 3` `DataGrid` `WindowsCommunityToolkit`