1

我正在尝试创建一个 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 必须是单个元素。

任何可行的替代方案?

4

1 回答 1

6

您应该绑定到您的源列表ItemsControlItemsSource您可以在ItemsControl.ItemsPanel其中设置要用于项目的面板。在您的情况下,您应该使用StackPanelwith Orientation=Verticalas ItemsPanel。请参阅此处的第一个示例。但是垂直StackPanel已经是默认的ItemsPanel,所以你可以省略它。

内部StackPanel应指定为ItemTemplate您的ItemsControl.

您的 XAML 应如下所示:

<ItemsControl ItemsSource="...">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <!-- properties of your object should go here -->
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2012-11-02T14:23:01.820 回答