我有一个UserControl,它成为XPS报告中的一个页面。页面的一部分是从List填充的表。我为表的每一行创建了一个DataTemplate。但是,当我将模板分配给ListView或ItemsControl时,我收到以下错误:
错误2“System.Windows.DataTemplate”类型的对象无法应用于需要“System.Windows.Controls.ControlTemplate”类型的属性。
我在一个Window中成功使用过这个,在UserControl中可以做同样的事吗?
所以在我的UserControl.Resources中我有以下数据模板
<DataTemplate x:Key="StiffenerTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=Spacing}" />
<TextBlock Grid.Column="1" Text="{Binding Path=Stiffener.Name}" />
<TextBlock Grid.Column="2" Text="{Binding Path=XLeft}" />
<TextBlock Grid.Column="3" Text="{Binding Path=XRight}" />
<TextBlock Grid.Column="4" Text="{Binding Path=XLeft}" />
<TextBlock Grid.Column="5" Text="{Binding Path=XRight}" />
</Grid>
</DataTemplate>
并且在控件的主网格中有
<ItemsControl ItemsSource="{Binding Path=WebStiffeners}"
Template="{StaticResource StiffenerTemplate}"/>
答案 0 :(得分:2)
您需要使用ItemTemplate
代替模板:
<ItemsControl ItemsSource="{Binding Path=WebStiffeners}"
ItemTemplate="{StaticResource StiffenerTemplate}"/>
来自MSDN ItemsControl:
ItemTemplate 获取或设置用于显示每个项目的DataTemplate。
模板获取或设置ControlTemplate。定义Control的外观的模板。