2010-05-10 74 views
10

我试图在WPF应用程序内创建用户控件,该控件将作为的DataTemplate。用户使用4 TextBlock s控制网格。此控件还包含其他形状和图像,比视觉效果更好,因此为了清晰起见,我将其从代码中省略。在WPF应用程序中将用户控件用作DataTemplate

当我将用户控件放在我的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> 

回答

13

DataTemplate实际上没有被分配到您的ListBox。有三种方式:

1:

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

替换的资源部分的模板。
2:有点关系:

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

3:设置DataTemplate的数据类型参数上面无论你ListBox的内容。

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

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

相关问题