我有一个以 UniformGrid 作为其 ItemsPanel 的 ListBox。基本上,我不想将项目显示为带边框的矩形。我使用 UniformGrid 作为 ItemsPanel,在这里我可以控制通过绑定显示的行数和列数。
我正在使用 ListBox 的 ItemContainerStyle 为每个项目设置边框。我可以指定 BorderThickness,它确实出现在列表中的所有项目周围。问题是相邻项目的边界不会合并,从而为相邻项目提供“双边界”。如何控制每个项目的边框,以使每个项目都具有唯一的厚度,即使它可能有相邻的项目。
这是按比例缩小的代码
<ListBox x:Name="lstGroups" ItemsSource="{Binding Groups}" Grid.Row="1" Style="{StaticResource RelayDispositionStyle}"
SelectedItem="{Binding SelectedGroup}" gs:DragDropExtension.ScrollOnDragDrop="True"
ItemContainerStyle="{StaticResource ItemContainerStyle}"
>
</ListBox>
<Style x:Key="RelayDispositionStyle" TargetType="{x:Type ListBox}" BasedOn="{StaticResource {x:Type ListBox}}">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding ElementName=Racks, Path=SelectedItem.NoOfRows}"
Columns="{Binding ElementName=Racks, Path=SelectedItem.GroupsPerRow}"
HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,10,0,0">
</UniformGrid>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="RelayDispositionItemContainerStyle" TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="MidnightBlue"/>
</Style>