WPF ItemsControl中的项间距

Den*_*els 15 wpf xaml .net-4.0 itemscontrol

我正在List<string>ItemsControl中显示一个集合.问题是列表项之间没有间距TheyAreAllNextToEachOther.

如何在项目之间创建一些间距?

<ItemsControl Grid.Column="2" 
         Grid.ColumnSpan="2" 
         ItemsSource="{Binding Path=ShowTimes}"
         BorderThickness="0">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

Roh*_*ats 54

为您的ItemsControl容器(默认ContentPresenter)提供样式,您可以将Margin设置为5:

    <ItemsControl>
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="FrameworkElement.Margin" Value="5"/>
            </Style>
        </ItemsControl.ItemContainerStyle>
    </ItemsControl>
Run Code Online (Sandbox Code Playgroud)


小智 3

我会在您设置边距的地方添加一个 ItemTemplate

<ItemsControl.ItemTemplate>
    <DataTemplate>
        <TextBlock Margin="3,3,3,3" Text="{Binding}"/>
   </DataTemplate>
</ItemsControl.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

  • 如果您只想要项目控件没有外部间距的间隙,请为项目面板设置负边距,等于项目的正边距: `&lt;WrapPanel IsItemsHost="True" Orientation="Horizo​​ntal" Margin="-3,- 3,-3,-3"/&gt;` 如果此答案的项目间隙为 6。 (8认同)
  • 虽然这确实有效并且与几乎所有其他解决方案类似,但它并不理想。如果只有一个项目,那么您将无缘无故地添加间距,并且第一个和最后一个项目将始终具有额外的空间。这也意味着每个元素的有效间距为 6,因为前一个元素的边距始终为 3。 (7认同)