在 ListBox 中显示自定义对象列表,为每个对象使用自定义用户控件
Display List of Custom Objects in a ListBox, Using a Custom User Control For Each
我有一个对象列表(自定义 class),我想将其显示在 ListBox 中,每个对象都绘制在自定义用户控件中。想象一个联系人列表(带有自定义联系人 class)应该显示为 ContactUserControls 列表(XAML 旨在显示联系人)
我知道如何将联系人对象列表数据绑定到列表框。我可以将单个联系人数据绑定到单个 ContactUserControl。我试图了解使用我的自定义 UserControl 绘制每个对象的数据绑定对象列表的 pattern/implementation。
我是否将 ListBox 绑定到我的联系人对象列表,并(在联系人 class 内)建立与 ContactUserControl ("This is how you draw") 的连接?我是否将 ListBox 绑定到 ContactUserControls 列表,并在每个用户控件进入列表之前将每个用户控件绑定到其中一个联系人对象?如果是这样,我是否必须通过 "ForEach" 绑定手动完成,或者是否有一种 "semi-magical" 方式可以完全通过 XAML 完成?
理想情况下,一切都正确数据绑定。谢谢!不希望有人提出整个问题的交钥匙解决方案,指向适用的 pattern/tutorials 将是一个很好的开始。
您可以使用 <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 the section about To format items in a ListBox or see https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx示例部分
我有一个对象列表(自定义 class),我想将其显示在 ListBox 中,每个对象都绘制在自定义用户控件中。想象一个联系人列表(带有自定义联系人 class)应该显示为 ContactUserControls 列表(XAML 旨在显示联系人)
我知道如何将联系人对象列表数据绑定到列表框。我可以将单个联系人数据绑定到单个 ContactUserControl。我试图了解使用我的自定义 UserControl 绘制每个对象的数据绑定对象列表的 pattern/implementation。
我是否将 ListBox 绑定到我的联系人对象列表,并(在联系人 class 内)建立与 ContactUserControl ("This is how you draw") 的连接?我是否将 ListBox 绑定到 ContactUserControls 列表,并在每个用户控件进入列表之前将每个用户控件绑定到其中一个联系人对象?如果是这样,我是否必须通过 "ForEach" 绑定手动完成,或者是否有一种 "semi-magical" 方式可以完全通过 XAML 完成?
理想情况下,一切都正确数据绑定。谢谢!不希望有人提出整个问题的交钥匙解决方案,指向适用的 pattern/tutorials 将是一个很好的开始。
您可以使用 <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 the section about To format items in a ListBox or see https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx示例部分