为了翻译 ListBox 中的项目,您可以将Margin
其容器的属性设置为ItemContainerStyle
:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Margin" Value="{Binding ItemMargin}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ItemText}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
设置Margin
项目容器的 而不是项目的容器(例如 DataTemplate 中的 TextBlock)可以防止选择矩形覆盖边距区域。
添加如下所示的项目会在第一个项目和第二个项目之间创建 100 像素的间隙。
var items = new List<object>();
items.Add(new { ItemText = "Item 1", ItemMargin = new Thickness() });
items.Add(new { ItemText = "Item 2", ItemMargin = new Thickness(0, 100, 0, 0) });
items.Add(new { ItemText = "Item 3", ItemMargin = new Thickness() });
DataContext = items;