根据内容的长度调整列表框的大小

Resize listbox depending on length of content

嘿,我想要一个 WPF 列表框根据内容的长度更改宽度。 所以没有滚动条。

如果 Grid 和 MainWindow 的大小也发生变化,那就太棒了。

有没有办法调整字符串的大小。不是正常长度?身份证 或者你能检测滚动条是否可见吗?

如果列表框是您的 window:

中唯一的东西,实现起来就很简单了
    Height="300"
    Title="MainWindow" 
    SizeToContent="Width"
    >
<Grid>
    <ListBox>
        <ListBoxItem>ListBox Item #1</ListBoxItem>
        <ListBoxItem>ListBox Item That is wider</ListBoxItem>
        <ListBoxItem>ListBox Item #3</ListBoxItem>
    </ListBox>
</Grid>
</Window>

不要在 window 上设置宽度。

在 window 上设置 SizeToContent="Width"。

然后它将调整为列表框中最长的字符串。

如果你有更复杂的布局,那就更复杂一点。

假设您的window(或者列表框所在的容器)是固定宽度或最小宽度。

您可以在列表框上设置水平对齐方式和内容对齐方式。

在这里,我将网格设为粉红色,以便您可以看到列表框的范围

    Height="300"
    Title="MainWindow" 
    SizeToContent="Width"
    >
<Grid Background="Pink"
      MinWidth="600">
    <ListBox Width="Auto"
             HorizontalAlignment="Left"
             HorizontalContentAlignment="Left"
             >
        <ListBoxItem>ListBox Item #1</ListBoxItem>
        <ListBoxItem>ListBox Item That is wider</ListBoxItem>
        <ListBoxItem>ListBox Item #3</ListBoxItem>
    </ListBox>
</Grid>