如何将Template/DataTemplate添加到TableCell

本文关键字:添加 TableCell DataTemplate Template | 更新日期: 2023-09-27 17:58:52

我在谷歌上搜索了一下,但没有找到任何真正有用的东西;我的目的是显示指定Class:的指定DataTemplate

    <FlowDocumentScrollViewer>
        <FlowDocument>
            <Table BorderBrush="Black" BorderThickness="1" CellSpacing="0">
                <Table.Columns>
                    <TableColumn></TableColumn>
                    <TableColumn></TableColumn>
                    <TableColumn></TableColumn>
                    <TableColumn></TableColumn>
                </Table.Columns>
                <Table.RowGroups>
                    <TableRowGroup >
                        <TableRow>
                            <TableCell>DataTemplate1</TableCell>//class1
                            <TableCell>DataTemplate2</TableCell>//class2
                            <TableCell>DataTemplate3</TableCell>//class3
                            <TableCell>DataTemplate4</TableCell>//class4
                        </TableRow>
                    </TableRowGroup> 
                </Table.RowGroups>
            </Table>
        </FlowDocument>
    </FlowDocumentScrollViewer>

重要的是,它必须是一个仅XAML的解决方案,因为我根据XamlReader.Load()加载这个XAML,所以不会有代码绑定文件。

如何将Template/DataTemplate添加到TableCell

对于每个需要模板的类型,您可以在参考资料中的某个位置定义一个只有DataType属性的DataTemplate。为了让它们显示出来,您需要将数据项绑定到单元格中的某个ContentControl。下面是一个示例,其中包含int和bool的模板以及到集合项的绑定:

<FlowDocumentScrollViewer>
  <FlowDocumentScrollViewer.Resources>
    <DataTemplate DataType="{x:Type system:Int32}">
      <TextBlock Text="{Binding StringFormat='A number: {0}'}" />
    </DataTemplate>
    <DataTemplate DataType="{x:Type system:Boolean}">
      <TextBlock Text="{Binding StringFormat='A bool: {0}'}" />
    </DataTemplate>
  </FlowDocumentScrollViewer.Resources>
  <FlowDocument>
    <Table BorderBrush="Black"
           BorderThickness="1"
           CellSpacing="0">
      <Table.Columns>
        <TableColumn></TableColumn>
        <TableColumn></TableColumn>
        <TableColumn></TableColumn>
        <TableColumn></TableColumn>
      </Table.Columns>
      <Table.RowGroups>
        <TableRowGroup>
          <TableRow>
            <TableCell>
              <BlockUIContainer>
                <ContentControl Content="{Binding MixedTypeList[0]}" />
              </BlockUIContainer>
            </TableCell>
            <TableCell>
              <BlockUIContainer>
                <ContentControl Content="{Binding MixedTypeList[1]}" />
              </BlockUIContainer>
            </TableCell>
            <TableCell>
              <BlockUIContainer>
                <ContentControl Content="{Binding MixedTypeList[2]}" />
              </BlockUIContainer>
            </TableCell>
          </TableRow>
        </TableRowGroup>
      </Table.RowGroups>
    </Table>
  </FlowDocument>
</FlowDocumentScrollViewer>