WPF DataTemplate for Collection

时间:2013-02-15 22:21:25

标签: wpf binding collections datatemplate

我现在必须垂头丧气,因为我已经在Google上搜了好几个小时,但仍然不知道我做错了什么。

<DataTemplate DataType="{x:Type local:Controllers}">
    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <WrapPanel>
                    <TextBlock Text="{Binding Path=Port}" />
                </WrapPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</DataTemplate>

尝试做的是在此列表中显示任意数量的控制器对象。 “控制器”只是“List&lt; Controller&gt;”的别名。 “端口”是每个“控制器”对象的属性,但当然不会显示在列表中。正在将项正确添加到列表所基于的集合中(该集合实际上存储为显示此对象集合的ContentControl的Content属性),但集合本身中没有项目正在显示。

我一开始认为它可能是一个更新问题 - 该集合正在以其初始的空状态正确显示,但事实并非如此;如果我从已经填充的集合开始,我仍然没有任何项目。

帮助我,欧比万。 :(

1 个答案:

答案 0 :(得分:1)

您需要将某些内容绑定到ListBox。这个东西只是{Binding},它指的是在运行时传入的DataTemplate s DataType的实例。

<DataTemplate DataType="{x:Type local:Controllers}">
    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <WrapPanel>
                    <TextBlock Text="{Binding Path=Port}" />
                </WrapPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</DataTemplate>