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

rlc*_*ews 10 wpf user-controls datatemplate wpf-controls

我试图创建一个WPF应用程序,它将作为一个内的用户控制DataTemplateListBoxItem.用户用4 TextBlock秒控制网格.此控件还包含其他形状和图像,用于视觉辅助比任何东西,所以为了清楚起见,我在这个问题的代码中省略了它们.

当我在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>
Run Code Online (Sandbox Code Playgroud)

Jus*_*ill 14

DataTemplate实际上并没有分配给你ListBox.有三种方式:

1:替换参考资料部分中的模板

<ListBox.ItemTemplate>
    <DataTemplate>
        <local:ucActivityItm />
    </DataTemplate>
</ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

ListBox.
2:有点相关:

<ListBox ... ItemTemplate="{StaticResource myActivity}">
Run Code Online (Sandbox Code Playgroud)

3:将上面的DataType参数设置DataTemplate为您的内容ListBox.

<DataTemplate x:Key="myActivity" DataType="{x:Type ...}">
Run Code Online (Sandbox Code Playgroud)

我通常只是做第一个,但任何应该工作.