根据其内容调整列表框项目的宽度

Adjust ListBox items width based on its content

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid   Rows="1" >                    
            </UniformGrid>                    
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBoxItem HorizontalContentAlignment="Stretch">listbox item 1</ListBoxItem>
    <ListBoxItem>listbox item 2</ListBoxItem>
    <ListBoxItem>listbox item 3</ListBoxItem>
    <ListBoxItem>listbox item 4</ListBoxItem>
    <ListBoxItem>listbox item 5</ListBoxItem>
</ListBox>

我按照上面的方法添加了ListBoxItems,用UniformGrid来显示。但我无法为每个列表框项目实现基于内容的宽度。我已经尝试 HorizontalContentAlignment 作为 StretchAuto 宽度属性。什么都没发生。

您必须使用 HorizontalAlignment 而不是 HorizontalContentAlignment

<ListBoxItem HorizontalAlignment="Left">listbox item 1</ListBoxItem>

如果要为所有项目设置对齐方式,请考虑创建项目容器样式。

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
   <ListBox.ItemContainerStyle>
      <Style TargetType="{x:Type ListBoxItem}">
         <Setter Property="HorizontalAlignment" Value="Left"/>
      </Style>
   </ListBox.ItemContainerStyle>
   <!-- ...your code. -->
</ListBox>

请注意 HorizontalAlignment 的默认值已经是 Stretch,因此您看不出有什么不同。此外,没有Auto。可能的值为 LeftRightCenterStretch。除 Stretch 之外的所有值都将根据内容调整大小。