嵌套ItemsControl方向

时间:2016-08-01 16:41:01

标签: wpf nested orientation itemscontrol

我有一个嵌套的ItemsControl。我的数据结构是一个ObservableCollection of Campaigns,它包含一个Campaign类和一个observableCollection数据计数(总计,已分配,未分配,已关闭)。我需要的是以下内容:

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>

1 个答案:

答案 0 :(得分:0)

如果要更改ItemsControl内容的方向,请设置其groupingBy属性,如下所示:

ItemsPanel

将它包装在水平方向的父<ItemsControl ...attributes... > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> 中只会将它及其兄弟姐妹水平排列,但在这种特殊情况下它没有兄弟姐妹。