如何使用可变数量的StackPanels的StackPanel创建DataTemplate

时间:2012-11-02 12:43:38

标签: c# wpf datatemplate stackpanel

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

任何可行的替代方案?

1 个答案:

答案 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>