将ListBox绑定到集合中集合的元素

时间:2014-03-25 14:43:34

标签: c# wpf data-binding binding listbox

我在将ListBox绑定到集合中的集合元素时遇到了一些问题。让我解释一下:

我有一个名为ObservableCollection<Test>的集合testsCollection。每个测试都包含一个名为ObservableCollection<LogEvent>的{​​{1}}。每个LogEvents都有LogEvent我需要在ListBox中显示。

我需要在每个“测试”中的每个“LogEvent”中显示每个“消息”。它必须显示在一个平面列表中,所以我使用的是ListBox。

以下是我尝试的内容摘要:

Message

我把它放在XAML中:

DataContext = testCollection; // testCollection is an ObservableCollection<Test>

最后,这是ItemTemplate,stepItemTemplate:

<ListBox ItemsSource="{Binding LogEvents}" ItemTemplate="{StaticResource stepItemTemplate}">

这“工作”,但它只显示第一个测试的LogEvents中的消息。但我需要显示每个测试的每个LogEvent的每个消息..而且我不知道该尝试再做什么:(

1 个答案:

答案 0 :(得分:1)

当你想绑定像这样的场景

时,你应该使用Usser ItemsControl
<ListBox ItemsSource="{Binding testsCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Message}" FontSize="20" />
                    <ItemsControl ItemsSource="{Binding LogEvents}" Margin="0 20 0 0">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Border BorderBrush="Blue" BorderThickness="2">
                                <TextBlock Text="{Binding Message}" FontSize="20" />
                            </Border>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>

            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>