Подтвердить что ты не робот

Использовать пользовательский элемент управления как DataTemplate в приложении WPF

Я пытаюсь создать пользовательский элемент управления в приложении WPF, который будет служить DataTemplate для ListBoxItem. Пользователь управляет сеткой с 4 TextBlock s. Этот элемент управления также содержит другие формы и изображения больше для визуальной помощи, чем что-либо, поэтому я опускаю их из кода в этом вопросе для ясности.

Когда я удаляю элемент управления пользователя на моем mainwindow.xaml, я вижу, что элемент управления и правильно привязанные поля указывают на первую запись в источнике данных. То, что я хочу сделать, заключается в том, чтобы этот элемент управления несколько раз отображался в списке или панели обложки для каждой записи в базе данных.

Может ли кто-нибудь предоставить мне указатель или образец того, как иметь визуализацию управления пользователя как DataTemplate в панели управления ListBox.

До этого момента я пробовал следующее безрезультатно: Заранее благодарим за любые советы.

<!--within Window.Resource -->
<DataTemplate x:Key="myActivity">
        <local:ucActivityItm /> <!--usercontrol -->
</DataTemplate>

<!-- Listbox within the window -->
<ListBox HorizontalAlignment="Stretch" ItemTemplate="{DynamicResource myActivity}"  VerticalAlignment="Stretch">
 <ListBoxItem>
<!-- control also added for testing to ensure it rendered out-->
<local:ucActivityItm />   
</ListBoxItem>        
</ListBox>
4b9b3361

Ответ 1

То, что DataTemplate на самом деле не назначено вашему ListBox. Есть три способа:

1: замените шаблон в разделе "Ресурсы" на

<ListBox.ItemTemplate>
    <DataTemplate>
        <local:ucActivityItm />
    </DataTemplate>
</ListBox.ItemTemplate>

в ListBox.
2: Несколько связанных:

<ListBox ... ItemTemplate="{StaticResource myActivity}">

3: Установите параметр DataType для DataTemplate выше, независимо от содержимого вашего ListBox.

<DataTemplate x:Key="myActivity" DataType="{x:Type ...}">

Я обычно делаю первый, но любой из них должен работать.