绑定嵌套集合

时间:2013-06-15 16:53:17

标签: xaml windows-store-apps

我不明白为什么以下xaml没有正确分组项目。以下代码为DataContext的_Portfolios属性中的每个项创建一个组。但是,所有程序项目都在第一个程序项目中填充,而在第二个程序项目中没有。

2013年6月16日更新: _Portfolios是ViewModel页面上的一个方法,它返回IObservableCollection< Portfolio>。 每个Portfolio都有一个名为Programs的属性,它返回IObservableCollection< Program>它还有一个Name属性。在我看来,这个xaml应该产生两个盒子:一个用于包含飞机的组合飞机,一个用于包含船只的海军。可悲的是,它没有:(

<GridView Grid.Row="1" ItemsSource="{Binding _Portfolios}">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="{StaticResource ApplicationForegroundThemeBrush}" BorderThickness="1">
                <Grid>

                    <Grid.RowDefinitions>
                        <RowDefinition Height="40"></RowDefinition>
                        <RowDefinition Height="*"></RowDefinition>
                    </Grid.RowDefinitions>

                    <TextBlock Text="{Binding Name}"></TextBlock>

                    <ListView Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Programs}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}"></TextBlock>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>    

                </Grid>


            </Border>

        </DataTemplate>
    </GridView.ItemTemplate>

</GridView>

enter image description here
enter image description here
enter image description here

1 个答案:

答案 0 :(得分:0)

在您向我发送项目文件后,我发现您在PortfolioRepository.cs类中只添加了第一个投资组合实体

p1.Programs.Add(new entity.Program() { Id = 1, Name = "Battleship" });
p1.Programs.Add(new entity.Program() { Id = 2, Name = "Aircraft Carrier" });

将其更改为以下工作

p2.Programs.Add(new entity.Program() { Id = 1, Name = "Battleship" });
p2.Programs.Add(new entity.Program() { Id = 2, Name = "Aircraft Carrier" });

在上述更改后,输出如下所示

enter image description here