如何将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,所以不会有代码绑定文件。
对于每个需要模板的类型,您可以在参考资料中的某个位置定义一个只有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>