我需要的ItemsControl
必须this appearance:
对于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
。
不知道如何正确实现模板以获得与我的屏幕截图相同的外观,或者我是否必须覆盖一个函数来设置正确的布局?
答案 0 :(得分:1)
我不确定"Floating ItemsControl"
的含义,但如果您只想在ItemsControl
中一次显示6个项目的行,则可以设置ItemsPanelTemplate
到WrapPanel
Orientation="Vertical"
,并给它一个6x项目的高度。
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" Height="300" />
</ItemsPanelTemplate>
这将垂直显示WPF绘图项,直到达到高度限制,然后它将水平换行到新列以继续绘制项目。