我有一个对象列表(一个自定义类),我希望在ListBox中显示,每个对象都在自定义用户控件中绘制。想象一下联系人列表(带有自定义Contact类),它应该显示为ContactUserControls列表(用于呈现联系人的XAML)
我知道如何将Contact对象列表数据绑定到ListBox。我可以将一个Contact数据绑定到一个ContactUserControl。我试图理解使用我的自定义UserControl绘制每个对象的数据绑定对象列表的模式/实现。
我是否将ListBox绑定到我的Contact对象列表,并且(在Contact类中)设置了与ContactUserControl的连接("这是你绘制的方式")?是否将ListBox绑定到ContactUserControls列表,并将每个User Control绑定到其中一个Contact对象,然后再进入列表?如果是这样,我是否必须通过" ForEach"手动完成。绑定,还是有一个半神奇的"纯粹通过XAML可以完成的方式吗?
理想情况下,一切都是正确的数据绑定。谢谢!不要指望有人提出整个事情的交钥匙解决方案,指向适用的模式/教程将是一个很好的开始。
答案 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 示例部分