WPF:具有统一宽度项目的水平对齐集合

WPF: Horizontally aligned collection with items of uniform width

我从视图模型绑定了数量可变的项目,这些项目需要水平显示并且可以选择。 每个项目都由一个文本表示,这些文本的长度各不相同。当我使用带有水平方向的 StackPanel 作为其 ItemTemplate 的列表视图时,项目仅与内部文本一样宽。 有没有办法让它们的尺寸都一样,也就是说最宽的尺寸?理想情况下没有一些复杂的代码隐藏,使用项目模板等? 注意:我不能设置一些任意的最小宽度,因为我不知道文本最终可以有多长(不同的语言等)

您可以使用 ListBox 作为 ItemsPanel,它具有 UniformGrid 的选择支持。 UniformGrid 将为每个元素

分配相等的 space
<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

例子