2012-01-07 22 views
1

我有一个UserControl成为XPS报表中的页面。页面的一部分是从List中填充的表格。我为表的每一行创建了一个DataTemplate。但是,当我将模板分配给ListView或ItemsControl时,出现以下错误:在UserControl中使用DataTemplates

错误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

某种类型代码R XAML的.....需要让知道你WKT正在尝试做.... – Ankesh 2012-01-07 14:46:17

+0

Appologies,那将是因为我试图设置ItemControl的模板而不是ItemTemplate。所有现在工作 – 2012-01-07 15:10:38

回答

2

您需要使用ItemTemplate代替模板:

<ItemsControl ItemsSource="{Binding Path=WebStiffeners}" 
          ItemTemplate="{StaticResource StiffenerTemplate}"/> 

来自MSDN ItemsControl

ItemTemplate Gets or sets the DataTemplate used to display each item.

Template Gets or sets the ControlTemplate. The template that defines the appearance of the Control.

+0

感谢nemesv,只是发现它 – 2012-01-07 15:11:22