当我使用水平项目排序创建ListBox
时,例如:
<DockPanel>
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem>
<Button Content="Hello" />
</ListBoxItem>
<ListBoxItem>
<Button Content="Hello" />
</ListBoxItem>
</ListBox>
</DockPanel>
我在列表中的按钮之间有小间隙,如下图中的箭头所示:
我怎样才能摆脱这些空白?我需要让ListBox
中的物品彼此相邻。我尝试更改ItemTemplate
的{{1}},但没有帮助。
答案 0 :(得分:36)
这是因为ListBoxItem的默认ItemContainerStyle中的填充。要删除它,您可以覆盖ItemContainerStyle。例如,只需在ListBox中尝试以下Empty ItemContainerStyle,就可以看到边距不再存在。
<ListBox >
<ListBox.ItemsPanel>
<ItemsPanelTemplate >
<VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<Button Content="hello1" Width="75"/>
<Button Content="Hello2" Width="75"/>
</ListBox>
答案 1 :(得分:28)
这些差距在ControlTemplate
的{{1}}内,您必须覆盖我害怕......
编辑:在某些平台上,您甚至不需要弄乱ListViewItems
来消除项目之间的差距:
Template
为了摆脱实际需要更改ListBox ControlTemplate本身的那一侧的差距,这不是项目的问题。在默认的Aero模板中,有一个带有 <ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0"/>
</Style>
</ListBox.ItemContainerStyle>