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

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

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

Может любой предоставлять мне указатель или образец того, как иметь рендеринг пользовательского элемента управления как a 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>
10
задан Dave Clemmer 13 January 2013 в 19:16
поделиться

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 ...}">

Обычно я делаю только первое, но любой должен работать.

14
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: