嵌套项目控制方向

Nested ItemsControl Orientation

我有一个嵌套的 ItemsControl。我的数据结构是一个 ObservableCollection of Campaigns,它由一个 Campaign class 和一个 observableCollection of Data counts (total, assigned, unassigned, closed) 组成。我需要的是:

CAMPAIGN.NAME
     TOTAL     UNASSIGNED     ASSIGNED     CLOSED
CAMPAIGN.NAME
     TOTAL     UNASSIGNED     ASSIGNED     CLOSED

我能够得到它的第一部分,但出于某种原因它不会遵循第二个 ItemsControl 的方向。我错过了什么?我的 XAML 是:

<ItemsControl x:Name="icCampaignChicklets" ItemsSource="{Binding CampChicks}" Grid.Row="1">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid x:Name="gridContent">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="20" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <TextBlock x:Name="CampaignHeader" Height="20" Text="{Binding Path=Campaign.Name}" Grid.Row="1"  VerticalAlignment="Top" TextWrapping="Wrap" HorizontalAlignment="Left" />
                    <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10">
                        <ItemsControl x:Name="icChicklets" ItemsSource="{Binding Path=Data}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Border Width="150" Height="140" Background="{Binding Background}" Cursor="Hand"
                                    MouseLeftButtonDown="Chicklet_MouseLeftButtonDown"
                                    >
                                        <Grid x:Name="gridContent" Margin="8,4">
                                            <TextBlock Text="{Binding Caption}" Foreground="White" FontSize="17" />
                                            <TextBlock Text="{Binding CountCaption, Mode=OneWay}" Foreground="White" FontSize="45" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="7" />
                                            <TextBlock Text="Ú" Foreground="#99ffffff" FontSize="30" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="3,5" FontFamily="Wingdings 3" />
                                        </Grid>
                                    </Border>
                                </DataTemplate>

                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

如果要更改 ItemsControl 内容的方向,请像这样设置其 ItemsPanel 属性:

<ItemsControl
    ...attributes...
    >
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

将它包裹在水平方向的父级 StackPanel 中只会水平排列它和它的兄弟姐妹,但在这种特殊情况下,它没有兄弟姐妹。