0

我需要的ItemsControl必须有这样的外观

在此处输入图像描述

因为ItemsPanel我已经设置了StackPanel一个水平方向。

<Style TargetType="local:ParameterItemContainer">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:ParameterItemContainer">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <Grid >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>

                        <ItemsPresenter Margin="{TemplateBinding Margin}" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

ParameterItemContainer源自ItemsControl

不知道如何正确实现模板以获得与我的屏幕截图相同的外观,还是我必须重写一个函数来设置正确的布局?

4

1 回答 1

1

我不确定您的意思是什么"Floating ItemsControl",但是如果您只想一次显示 6 个项目的行,ItemsControl您可以将其设置ItemsPanelTemplateWrapPanelwith Orientation="Vertical",并为其指定 6x 项目的高度。

<ItemsPanelTemplate>
    <WrapPanel Orientation="Vertical" Height="300" />
</ItemsPanelTemplate>

这将使 WPF 垂直绘制项目,直到达到高度限制,然后它将水平换行到一个新列以继续绘制项目。

于 2013-05-10T14:09:40.007 回答