迭代 XAML 中的更多集合

Iterations through more collections in XAML

我需要遍历 Shippers,然后 shipper.Parcels 最后使用 shipper.parcel.parcelNumber。

应用程序只显示空白表单(而不是生成的按钮)。

我 100% 确定,这个错误只是因为这个 XAML 代码造成的。 拜托,有人在这里看到一些错误吗?

这里是我的全部XAML,重要的部分描述如下:

<Window x:Class="EnterEventTextBox.DataView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:EnterEventTextBox"
        mc:Ignorable="d" Background="Black"
        Title="DataView" Height="450" Width="300"
        xmlns:cal="http://www.caliburnproject.org"
        >
    <Window.Resources>
        <ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
            <WrapPanel MaxWidth="300" Orientation="Horizontal" IsItemsHost="True"/>
        </ItemsPanelTemplate>
        <Style x:Key="ItemsControlStyle1" TargetType="{x:Type ItemsControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ItemsControl}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
                                Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                            <ScrollViewer CanContentScroll="True" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible">
                                <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>    

    <!-- HERE STARTS IMPORTANT CODE PIECE -->
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ItemsControl ItemsSource="{Binding Shippers}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <ItemsControl MaxWidth="300" MaxHeight="100" ItemsSource="{Binding Shipper_Parcels}" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" 
                      Style="{DynamicResource ItemsControlStyle1}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate DataType="{x:Type Button}">
                                <Button Height="50" Width="50" Background="Red" Content="{Binding Shipper_Parcel_ParcelNumber}" Margin="0,0,5,5"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
    <!-- END -->
</Window>

我怀疑您只是没有考虑到在显示子元素时,这些项目的 DataContext 是在父元素中迭代的各个项目。

<ItemsControl ItemsSource="{Binding Shippers}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ItemsControl MaxWidth="300" MaxHeight="100" ItemsSource="{Binding Parcels}" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" 
                  Style="{DynamicResource ItemsControlStyle1}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate DataType="{x:Type Button}">
                            <Button Height="50" Width="50" Background="Red" Content="{Binding ParcelNumber}" Margin="0,0,5,5"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

您应该查看调试器的输出,因为它会输出任何它无法识别的绑定。