2012-01-07 24 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