在WPF应用程序中使用用户控件作为DataTemplate

12
我正在尝试在WPF应用程序中创建一个用户控件,用作ListBoxItem的DataTemplate。该用户控件包含一个带有4个TextBlock的网格。除此之外,该控件还包含其他形状和图像,更多是为了视觉辅助,因此我在本问题的代码中省略了它们以使内容更加清晰。
当我将用户控件拖放到mainwindow.xaml上时,我可以看到该控件,并且正确绑定的字段指向数据源中的第一条记录。我想要做的是让这个控件在列表框或包装面板中每个数据记录内重复渲染。
有人能否提供我一个指针或示例,说明如何将用户控件呈现为ListBox控件 /其他面板中的DataTemplate。
到目前为止,我已经尝试过以下方法,但都没有成功:
提前感谢任何提示。
<!--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>
1个回答

19

你的 ListBox 实际上并没有分配那个 DataTemplate。有三种方法可以解决:

1:将资源部分中的模板替换为

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

ListBox 中。
2:有些相关:

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

3: 将上面的 DataTemplate 的 DataType 参数设置为你的 ListBox 内容的类型。

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

通常我只执行第一个,但任何一个都应该可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接