Использование DataTemplates внутри UserControl - PullRequest
1 голос
/ 07 января 2012

У меня есть UserControl, который становится страницей в отчете XPS.Часть страницы представляет собой таблицу, которая заполняется из списка.Я создал DataTemplate для каждой строки таблицы.Однако, когда я назначаю Шаблон ListView или ItemsControl, я получаю следующую ошибку:

Ошибка 2 Объект типа «System.Windows.DataTemplate» не может быть применен к свойству, которое ожидает тип «Система».Windows.Controls.ControlTemplate ".

Я успешно использовал это в окне, нельзя ли сделать то же самое в 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}"/>

1 Ответ

2 голосов
/ 07 января 2012

Вам нужно использовать ItemTemplate вместо шаблона:

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

Из MSDN ItemsControl :

ItemTemplate Получает или задает DataTemplate, используемый для отображения каждого элемента.

Шаблон Получает или задает ControlTemplate.Шаблон, определяющий внешний вид элемента управления.

...