我正在尝试创建一个DataTamplate,它应该包含一个包含一定数量StackPanel的StackPanel。
<DataTemplate x:Key="DataTemplate">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Rectangle Fill="Aqua" Margin="2" Height="100" Width="50" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</StackPanel>
</StackPanel>
</DataTemplate>
上面的代码片段只是为了更好地理解我想要的结果,因为叠加的StackPanel中的元素将被绑定。
这会生成以下错误消息: ItemsPanelTemplate的VisualTree必须是单个元素。
任何可行的替代方案?
答案 0 :(得分:3)
您应ItemsControl
ItemsSource
绑定到源列表。在ItemsControl.ItemsPanel
中,您可以设置要用于项目的面板。在您的情况下,您应使用StackPanel
Orientation=Vertical
作为ItemsPanel
。见first sample here。但是,垂直StackPanel
已经默认为ItemsPanel
,因此您可以省略它。
内部StackPanel
应在ItemTemplate
中指定为ItemsControl
。
您的XAML应如下所示:
<ItemsControl ItemsSource="...">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- properties of your object should go here -->
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>