是否有标准/最佳方式来在WPF中分隔项目 ListBox
,连续项之间有空格,但不高于第一项或低于最后一项?
对我来说,添加间距最明显的方法是修改 ItemTemplate
包括每个项目上方,下方或两者上方和下方的空间。当然,这意味着第一个和/或最后一个项目上方/下方的空间或单个项目。
我可以使用触发器为第一个,最后一个,中间项目选择不同的模板,但是想知道是否有一些我更缺的简单 - 似乎控制间距是一个常见的要求。
谢谢。
注意:我在WPF中工作,但假设这与Silverlight XAML中的相似(如果不相同)。
我要做的是,在ListBox控件模板上给出负边距,并为DataTemplate / ItemContainerStyle提供相同的边距。这使得第一个和最后一个项目中的空间。检查以下XAML。而是在DataTemplate中设置我给Button(ListBoxItem)本身的边距。
<Windows.Resources>
<ControlTemplate x:Key="ListBoxControlTemplate1" TargetType="{x:Type ListBox}">
<Grid Background="{TemplateBinding Background}">
<ItemsPresenter Margin="0,-5"/>
</Grid>
</ControlTemplate>
</Window.Resources>
<ListBox HorizontalAlignment="Center" VerticalAlignment="Center" Template="{DynamicResource ListBoxControlTemplate1}" Background="#FFAB0000">
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
</ListBox>
我要做的是,在ListBox控件模板上给出负边距,并为DataTemplate / ItemContainerStyle提供相同的边距。这使得第一个和最后一个项目中的空间。检查以下XAML。而是在DataTemplate中设置我给Button(ListBoxItem)本身的边距。
<Windows.Resources>
<ControlTemplate x:Key="ListBoxControlTemplate1" TargetType="{x:Type ListBox}">
<Grid Background="{TemplateBinding Background}">
<ItemsPresenter Margin="0,-5"/>
</Grid>
</ControlTemplate>
</Window.Resources>
<ListBox HorizontalAlignment="Center" VerticalAlignment="Center" Template="{DynamicResource ListBoxControlTemplate1}" Background="#FFAB0000">
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
<Button Content="Button" Width="88" Margin="0,5"/>
</ListBox>
你可以用一个 StyleSelector
并将其分配给 ItemContainerStyleSelector
属性。在样式选择器中,您只需根据项目是第一个,最后一个还是其他来选择不同的样式