Вы не хотите отображать коллекцию Values
в заголовке группы, но в содержимом группы, поэтому переместите ItemsControl
из-под заголовка Expander и установите его как ItemTemplate
.
Вот рабочий код:
<ListBox
Name="memberCollection"
Grid.Row="0"
MinWidth="150"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
BorderThickness="0"
ItemsSource="{Binding MainValues}">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Values}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Edit:
Если я вас правильно понимаю, вы хотите отобразить коллекцию предметов, а затем выбрать только один элемент в коллекции коллекций предметов!
Код проверки ниже, который использует ItemsControl
вместо ListView/ListBox
:
<ScrollViewer>
<ItemsControl ItemsSource="{Binding MainValues}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" Padding="5" Margin="5">
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Key}" FontWeight="Bold" />
</StackPanel>
</Expander.Header>
<ListBox ItemsSource="{Binding Values}"
BorderThickness="0,1,0,0" Margin="0,5,0,0"
DisplayMemberPath="Name" SelectedValuePath="Id" />
</Expander>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>