浮动ItemsControl

时间:2013-05-10 12:30:35

标签: wpf itemscontrol

我需要的ItemsControl必须this appearance

enter image description here

对于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

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

1 个答案:

答案 0 :(得分:1)

我不确定"Floating ItemsControl"的含义,但如果您只想在ItemsControl中一次显示6个项目的行,则可以设置ItemsPanelTemplateWrapPanel Orientation="Vertical",并给它一个6x项目的高度。

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

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