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

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

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

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

Спасибо.

Примечание: Я работаю в WPF, но предполагаю, что это подобно если не идентичный в Silverlight XAML.

11
задан Jay 22 March 2010 в 16:43
поделиться

2 ответа

Я бы сделал следующее: установил отрицательное поле в шаблоне элемента управления 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>
11
ответ дан 3 December 2019 в 08:54
поделиться

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

2
ответ дан 3 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: