首页 > 解决方案 > WPF 数据网格用户控件绑定

问题描述

是否可以将相同的用户控件添加到 datagrid column1 和 column2?只有一个用户控件。

<DataGrid SelectionUnit="Cell" Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <DataGrid.Columns>
            <DataGridTextColumn Header="test1" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="test2" Binding="{Binding image1}"/>
            <DataGridTextColumn Header="test3" Binding="{Binding image2}"/>
            <DataGridTemplateColumn Header="column1">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <local:UcFrameLessSheetInfoListviewItem />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="column2">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate x:Name="test">
                        <local:UcFrameLessSheetInfoListviewItem />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

在此处输入图像描述

标签: c#wpf

解决方案


要共享单元格模板,您必须在网格、用户控件或 App 级别将其声明为资源:

<UserControl.Resources>
    <DataTemplate x:Key="TestCellTemplate" DataType="viewModel:MyItemsType">
        <local:UcFrameLessSheetInfoListviewItem />
    </DataTemplate>
...
</UserControl.Resources>

然后你可以使用它来引用它StaticResource

<DataGridTemplateColumn Header="column1" CellTemplate="{StaticResource TestCellTemplate}" />
<DataGridTemplateColumn Header="column2" CellTemplate="{StaticResource TestCellTemplate}" />

推荐阅读