我正在寻找简单的方法来创建Listbox / ListView / ItemsControl,其中每个项目都是Grid的行。
我有简单的树结构(深度= 3)
Group
-> Question1
->Answer11
->Answer12
-> Question2
->Answer21
->Answer22
->Answer23
我希望将其呈现为表格。
QUestion1 | Answer11 | Answer12 | -
Question2 | Answer21 | Answer22 | Answer23
正如您所看到的,在运行时已知列数。最简单的方法是什么?我已经尝试混合ListView和GridView,但我在绑定嵌套的列的答案时遇到了一些问题。在使用MVVM的XAML中,还有其他简单的方法吗?
答案 0 :(得分:0)
你可以这样做。
<ListBox x:Name="listbox" ItemsSource="{Binding Questions}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:Question}">
<StackPanel Orientation="Horizontal">
<TextBlock Width="100" Text="{Binding QuestionText}" />
<ItemsControl ItemsSource="{Binding Answers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:Answer}">
<TextBlock Width="100" Text="{Binding Text}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这会创建问题列表(问题文本为第一列),问题答案为问题文本右侧的水平列表。
这假设您的问题和答案是可绑定的属性。这也不是一个真正的“网格”,但如果它看起来像一个表就足够了,它可以工作。