我有一个想要呈现的对象集合。我该怎么做?列表框可以,但每个对象都有许多我想呈现的属性。我已经将列表框绑定到集合,并且列出了所有对象。我的问题是关于列表框的可视化,以及列表框是否正确使用,或者我应该使用其他东西。
我发现现有的答案有点缺乏,通常不会处理集合或将其项目归结为字符串,充其量您会使用CollectionView
进行一些动态操作(例如排序、分组),但通常您使用数据模板来显示允许您使用其所有属性的单个项目。
此外,有几个控件可以很好地与集合配合使用,首先您需要知道是否要选择,如果不是ItemsControl
是一个不错的选择,否则您应该使用ListBox
或ListView
。
如果对象有不同的视图,例如详细信息视图和缩略图视图,则通常使用 ListViews。您可以使用ListView.View
,框架中有一个现有视图,即 GridView
,它提供列。Matthew Ferreira 建议的正是您不应该对 ListView 执行的操作,因为您希望使模板依赖于当前视图,实际上该代码甚至无法编译,因为DataTemplate
只能有一个子视图。
ListViews应该将视图逻辑封装在其视图中,以便可以随意更改。如果您决定使用ItemsControl
或ListBox
则设置ItemTemplate
是您想要做的。阅读我链接到的数据模板概述,它是一个很好的起点。
您可能需要考虑改用 ListView 控件。 ListView
支持列(如果您计划显示对象的多个属性)。可以使用 ItemTemplate
属性设置对象的显示格式。例如:
<ListView ItemsSource="{Binding Path=myObjectCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Title}"/>
<CheckBox IsChecked="{Binding Path=ShouldCheck}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
此示例假定您的对象具有属性 Title
和 ShouldCheck
。
您的对象集合可能被视为您的模型。WPF 中的常见操作是添加一个 ViewModel,该模型将模型数据转换并公开为适合绑定的形式。例如,根据要执行的操作,VM 可以将每个对象的格式设置为字符串表示形式,然后将其公开为列表框可以绑定和显示的字符串集合。