我的问题如下:
我有一个具有ObservableCollection字符串的类,它由选定的子元素填充。
这些应该列在ListBox中。
但是没有列出字符串,而是显示了FilterList中的对象类型。
<ListBox Grid.Row="2" Grid.Column="0"
ItemsSource="{Binding FilterList}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel IsItemsHost="True"
Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ListOfActiveFilters}">
<!--<ContentPresenter Content="{Binding ListOfActiveFilters.}"/>-->
<TextBlock Text="{Binding}" />
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Filter List包含将ListOfActiveFilters作为Property的类。 我认为它会按照我展示的方式工作,但事实并非如此。 因为这也是我看到其他人这样做的方式。
如果我使用带有单个字符串属性的Class作为Collection的类型而不是我现在拥有的字符串集合,我认为它会起作用。
我真的没有看到创建一个包含字符串属性的类的重点,以便我可以将ContentPresenter或TextBox绑定到该属性。
我做错了什么?我对这个话题很新。
答案 0 :(得分:1)
一个ListBox
只能在一个ListOfActiveFilters
个集合中显示过滤器。您可以使用嵌套的ItemsControls
来全部显示它们:
<ItemsControl ItemsSource="{Binding FilterList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding ListOfActiveFilters}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
另一个选项是修改数据模型并将所有字符串放在一个集合中。然后,您可以将ItemsSource
的{{1}}属性直接绑定到此属性。但是ListBox
本身没有层次数据的概念。