输入:我有一个主题xaml文件,其中所有数据模板都是针对特定数据类型定义的。请参阅下文,我有一个由网格组成的表格类型的数据模板。数据模板在资源字典下定义。我保持Grid为空,只是将名称命名为DynamicGrid。网格内容将由我在运行时决定,因此我保持空白。 (例如,网格可以是2乘2表,每个单元格作为文本框,一些文本框可以跨越任何行或任何列。)
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:th="clr-namespace:ThemeDataModel"
xmlns:my="clr-namespace:ThemeEditor"
xmlns:utility="clr-namespace:Utility.Wpf;assembly=Utility"
xmlns:wa="clr-namespace:WorkAreaControl;assembly=WorkAreaControl"
xmlns:p="clr-namespace:ThemeEditor.Properties"
>
<DataTemplate x:Name="temData" DataType="{x:Type th:Table}">
<Grid x:Name="DynamicGrid">
</Grid>
</DataTemplate>
...
问题:我的问题是如何从后面的C#代码访问网格(名称为DynamicGrid)。所以我的工作流程是,每当在我的themearea中添加“Table”类型的对象时,它应该使用上面的datatemplate,我应该能够访问数据模板下的网格并动态填充它。我是WPF的新手,如此善意地建议。如果我在xaml文件本身硬编码和定义网格内容,我就可以获得该表,但我想动态地进行。
然后我该怎样才能做到这一点?当我添加了Table类型的对象时,我需要将网格显示在已经存在的dragresize控件中。例如。参考下面的例子。当添加“AnotherTable”类型的对象时,它会添加一个带有工具提示的网格和一个带有白色背景的文本块。
<DataTemplate DataType="{x:Type th:AnotherTable}">
<Grid ToolTip="{DynamicResource AreaTip}">
<TextBlock Text="{DynamicResource Text}" Background="White"></TextBlock>
</Grid>
</DataTemplate>
我的要求是我不知道网格的外观如何,必须在运行时决定。