迭代 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>
您应该查看调试器的输出,因为它会输出任何它无法识别的绑定。
我需要遍历 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>
您应该查看调试器的输出,因为它会输出任何它无法识别的绑定。