我有一个包含3个可绑定项目的水平列表框。如何将它们拉伸到列表框的所有宽度?例如,第一个元素位于左侧,第二个元素位于中间,第三个元素位于右侧。现在我将它们与边距对齐,但我很感兴趣,它是否可能没有边距?我试图将ListBox属性HorizontalContentAlignment设置为Stretch,但没有得到我想要的。
感谢。
我尝试了你的建议,但不幸的是没有得到理想的结果。我的XAML在这里:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem Content="1"/>
<ListBoxItem Content="2"/>
<ListBoxItem Content="3"/>
</ListBox>
我得到的是:
我想要的是下面的内容:
答案 0 :(得分:2)
尝试以下方法:
<ListBox Grid.Row="1">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem HorizontalAlignment="Stretch">
<Grid>
<TextBlock Text="1" HorizontalAlignment="Left"/>
<TextBlock Text="2" HorizontalAlignment="Center"/>
<TextBlock Text="3" HorizontalAlignment="Right"/>
</Grid>
</ListBoxItem>
</ListBox>
答案 1 :(得分:0)
这是一个棘手的问题:)要做到这一点,你需要更改ListBox.ItemContainerStyle,查看MSDN forum上的答案。 另外,请查看本网站上的以下链接:
答案 2 :(得分:0)
我不确定你是否找到了解决方案,但是这对我来说是有效间隔的:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem Content="Item1"/>
<ListBoxItem Content="Item2"/>
<ListBoxItem Content="Item3"/>
</ListBox>
发现于:https://stackoverflow.com/a/1270813/124721
然后在ItemContainerStyle中混合,我可以将内容集中在一起:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
但是我仍然无法让一个项目与左边对齐,然后另一个项目与中心对齐,最后一个项目向右。直接将对齐应用于项目会缩小面板尺寸。但也许如果它被包装在另一个容器中,就像堆栈面板那样可以工作。