Есть ли стандарт/лучший способ для интервала объектов в WPF ListBox
, таким образом, что существует пространство между последовательными объектами, но не выше первого или ниже последнего?
Мне самый очевидный способ добавить интервал состоит в том, чтобы изменить ItemTemplate
включать пространство выше, ниже, или и выше и ниже каждого объекта. Это, конечно, означает, что будет пространство выше/ниже первого и/или последнего объекта также или единственного объекта.
Я мог использовать триггеры, чтобы выбрать различные шаблоны для первых, последних, промежуточных объектов, но задаться вопросом, существует ли что-то более простое, которое я пропускаю - кажется, что управление интервалом было бы общим требованием.
Спасибо.
Примечание: Я работаю в WPF, но предполагаю, что это подобно если не идентичный в Silverlight XAML.
Я бы сделал следующее: установил отрицательное поле в шаблоне элемента управления ListBox и укажите такой же запас для DataTemplate / ItemContainerStyle. которые занимают место в первом и последнем элементах. Проверьте приведенный ниже XAML. Вместо настройки в DataTemplate я дал маржу самой кнопке (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
. В селекторе стилей вы просто выбираете другой стиль в зависимости от того, является ли элемент первым, последним или другим