WPF将UserControl集合绑定到ItemsControl。 DataTemplate问题

时间:2014-07-03 11:11:51

标签: wpf datatemplate

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插件的集合。

enter image description here

1 个答案:

答案 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> 属性值,并且想要查看整个TitleTemplateTitle,则可以使用ControlTemplate