WinUI 3 DataGrid - 如何共享 DataGrid.Columns 定义

问题描述 投票:0回答:0

在 WinUI 3 中,我想在具有相同列定义的页面上创建两个

DataGrid
。基本上以下两个具有不同的
ItemsSource
值但引用相同类型的数据。 (并且有 20 多列,因此我只想在一个地方定义列。)

<controls:DataGrid AutoGenerateColumns="False"
                   ItemsSource="{x:Bind ViewModel.Things}">
    <controls:DataGrid.Columns>
        <controls:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
        <controls:DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
    </controls:DataGrid.Columns>
</controls:DataGrid>

我试过为模板创建一个

Page.Resource
,沿着这些线:

<Page.Resources>
    <ControlTemplate x:Key="test">
        <controls:DataGrid>
            <controls:DataGrid.Columns>
                <controls:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <controls:DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
            </controls:DataGrid.Columns>
        </controls:DataGrid>
    </ControlTemplate>
</Page.Resources>

如下引用它(我唯一能找到引用它的地方是

Template
属性。这需要引用
ControlTemplate
):

<controls:DataGrid AutoGenerateColumns="False"
                   ItemsSource="{x:Bind ViewModel.Things}"
                    Template="{StaticResource test}">
</controls:DataGrid>

有了这个,

DataGrid
显示列标题,但没有数据。

需要创建什么资源,如何引用?

datagrid winui-3 windows-community-toolkit
© www.soinside.com 2019 - 2024. All rights reserved.