http://www.filedropper.com/wpfapplication9 该链接在VS2013中有一个项目问题。
我的问题是,如何在ItemsControl中将DataTemplate设置为UserControl。
<ItemsControl ItemsSource="{Binding Collection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我的收藏是
public IEnumerable<MyUC> Collection {get;}
我的MyUC是
public partial class MyUC : UserControl
{
public string Title { get; set; }
}
当我试图显示该集合时,
MyUC.Content
insted的
MyUC.Title
当我将ItemsSouce更改为ListBox时,datatemplate开始工作。 但我需要显示没有ListBox插件的集合。
答案 0 :(得分:0)
如果我理解正确,您只想在收藏中显示Title
的{{1}}属性值。您所要做的就是在UserControl
部分为他们声明适当的DataTemplate
:
Resources
说实话,你似乎是以错误的方式解决这个问题。在WPF中,我们通常不将UI元素放入集合中,而是更喜欢使用具有<DataTemplate DataType="x:Type={YourPrefix:MyUC}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
的自定义数据类来定义它们的外观。在你的情况下,它看起来像这样:
DataTempate
如果您只想查看<DataTemplate x:Key="TitleTemplate" DataType="x:Type={YourPrefix:MyDataClass}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
<DataTemplate x:Key="ControlTemplate" DataType="x:Type={YourPrefix:MyDataClass}">
<YourControlPrefix:MyUC />
</DataTemplate>
属性值,并且想要查看整个TitleTemplate
时Title
,则可以使用ControlTemplate
。