1
我试图在需要绑定到枚举列表(List<ResourceType> Cost
)的GridViewColumn
内部显示ListBox
。 GridViewColumn
的ListView
已经绑定到一组对象,我不确定最好的方式去显示ListBox
。有什么建议么?显示带有列表枚举的列表框
我试图在需要绑定到枚举列表(List<ResourceType> Cost
)的GridViewColumn
内部显示ListBox
。 GridViewColumn
的ListView
已经绑定到一组对象,我不确定最好的方式去显示ListBox
。有什么建议么?显示带有列表枚举的列表框
您可以将ListBox
绑定到枚举值列表。一个简单的方法是使用我发布的标记扩展here。
然后,您需要将ListBox
的SelectedItem
绑定到GridViewColumn
中显示的属性。
您应该结束了这样的事情:
<GridViewColumn Header="Resource type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{local:EnumValues local:ResourceType}"
SelectedItem="{Binding SelectedResourceType}">
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
编辑:我想我误解你的问题......如果我理解正确的话,在ListView
显示的每个对象都有一个Cost
财产键入List<ResourceType>
,对不对? (顺便说一句,事实ResourceType
是一个枚举在这里并不重要)。所以你只需要绑定ListBox
到Cost
属性:
<GridViewColumn Header="Resource type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Cost}">
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
你打我吧。你是对的。第一种解释有点不合时宜,但你的编辑点击了头部。虽然好奇;为什么'ResourceType'是一个'enum'并不重要?是否因为WPF自动调用所选'enum'上的'ToString()'方法并显示它?感谢您的快速回答。 – SirBeastalot 2010-07-17 19:14:00
是的,就是这样。除非为该类型定义了DataTemplate,否则将调用ToString以获取该对象的表示形式 – 2010-07-17 21:05:37