Добавить пространство между элементами в WPF/Silverlight ListBox без пробела выше первого или нижнего

Существует ли стандартный/лучший способ размещения элементов в WPF ListBox, так что между последовательными элементами есть пробел, но не выше первого или ниже последнего?

Для меня наиболее очевидным способом добавить интервал является изменение ItemTemplate, чтобы включить пробел выше, ниже или оба выше и ниже каждого элемента. Это, конечно, означает, что будет пространство выше/ниже первого и/или последнего элемента или одного элемента.

Я мог бы использовать триггеры для выбора разных шаблонов для первого, последнего, промежуточного элементов, но задаюсь вопросом, есть ли что-то более простое, чего я не вижу - кажется, что контрольный интервал будет общим требованием.

Спасибо.

ПРИМЕЧАНИЕ. Я работаю в WPF, но предполагаю, что это похоже, если не идентично в Silverlight XAML.

Ответ 1

Что бы я делал, дайте отрицательное поле в шаблоне управления 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>

Ответ 2

Вы можете использовать StyleSelector и назначить его свойству ItemContainerStyleSelector. В селекторе стиля вы выбираете другой стиль, основываясь на том, является ли элемент первым, последним или другим