Я пытаюсь создать пользовательский элемент управления в рамках приложения WPF, которое будет служить a DataTemplate
для a ListBoxItem
. Пользовательский элемент управления сетка с 4 TextBlock
s. Это управление также содержит другие формы и отображает больше для визуальной помощи, чем что-нибудь так, что я опускаю их из кода в этом вопросе для ясности.
То, когда я отбрасываю пользовательский элемент управления на своем 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>
Этот 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 ...}">
Обычно я делаю только первое, но любой должен работать.