显示列表框中自定义对象的列表,为每个

时间:2017-01-09 00:56:01

标签: c# wpf xaml data-binding user-controls

我有一个对象列表(一个自定义类),我希望在ListBox中显示,每个对象都在自定义用户控件中绘制。想象一下联系人列表(带有自定义Contact类),它应该显示为ContactUserControls列表(用于呈现联系人的XAML)

我知道如何将Contact对象列表数据绑定到ListBox。我可以将一个Contact数据绑定到一个ContactUserControl。我试图理解使用我的自定义UserControl绘制每个对象的数据绑定对象列表的模式/实现。

我是否将ListBox绑定到我的Contact对象列表,并且(在Contact类中)设置了与ContactUserControl的连接("这是你绘制的方式")?是否将ListBox绑定到ContactUserControls列表,并将每个User Control绑定到其中一个Contact对象,然后再进入列表?如果是这样,我是否必须通过" ForEach"手动完成。绑定,还是有一个半神奇的"纯粹通过XAML可以完成的方式吗?

理想情况下,一切都是正确的数据绑定。谢谢!不要指望有人提出整个事情的交钥匙解决方案,指向适用的模式/教程将是一个很好的开始。

1 个答案:

答案 0 :(得分:2)

您可以使用<ListBox.ItemTemplate>。像这样:

<ListBox ItemsSource="{Binding contacts}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <local:ContactUserControls DataContext="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

请参阅https://msdn.microsoft.com/en-us/library/cc265158(v=vs.95).aspx有关格式化列表框中项目的部分,或参见https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx 示例部分