I'm styling the items in a WPF ListBox
, and want to put a border around each item. With BorderThickness
set to 1, for example, the top-bottom borders between adjacent items are both drawn and therefore appear "thicker" than the side borders, as shown:
The item template that produces these ListBoxItems
is:
<DataTemplate>
<Border BorderThickness="1" BorderBrush="DarkSlateGray" Background="DimGray" Padding="8 4 8 4">
<TextBlock Text="{Binding Name}" FontSize="16"/>
</Border>
</DataTemplate>
I'd like to "collapse" these adjacent borders, as one could, for example, through CSS. I'm aware that BorderThickness
can be defined separately for the left/right/top/bottom borders, but this affects the border of the first or last item, as well, which is not desired.
Is there a way to accomplish this with WPF? A property of Border
I'm missing, or does it require a different approach to creating borders?
Use
BorderThickness="1,0,1,1"
and aDataTrigger
which checks forRelativeSource={RelativeSource Mode=PreviousData}
beingnull
to setBorderThickness="1,1,1,1"
:You may add
to the border definition
One thing that comes to mind is to make use of AlternationIndex. This will require you to set something like
AlternationCount="10000"
on the ListBox. After that you can setBorderThickess="1,0,1,1"
and use a DataTrigger to find the first ListBoxItem