Bri*_*rns 13 wpf grid xaml listbox sizetocontent
必须有一个优雅的解决方案,但我在网上找不到任何东西.我有一个网格,其中有一列和一行宽度/高度*,包含一个ListBox.我将Window SizeToContents设置为WidthAndHeight,以允许窗口为每个UI小部件/字体集调整大小.当我向ListBox添加项目时,它会调整大小,从而导致窗口增长.
如果我改变窗口的大小,我希望ListBox调整大小,但如果我添加的内容长于ListBox的宽度,我希望滚动条出现而不是它的增长,导致Window增长.如果我为Window设置了显式大小并将SizeToContent设置为Manual(默认值),它就像我想要的那样工作.
是否有任何方法可以在启动时将窗口大小调整为内容并继续使ListBox随窗口大小增长而不是内容增长?
按照Potecaru Tudor的建议,我通过将ListBox包裹在另一个容器中并将ListBox的Height绑定到该容器的ActualHeight来解决了类似的问题。
这是一个XAML代码段,可以帮助您:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border x:Name="HeightHelperPanel" Grid.Row="0">
<ListBox ItemsSource="{Binding Path=FileNameCollection}"
MinHeight="60"
Height="{Binding Path=ActualHeight, ElementName=HeightHelperPanel}"/>
</Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)
基本上,边框容器在内容增长时不会增长,但会一直延伸到网格行的高度。网格行将填充包含窗口允许的任何空间,但不想在窗口上施加任何高度限制。因此,列表框的高度被限制为边框的高度。
希望能对遇到这个令人沮丧的问题的所有人有所帮助。
mir*_*cea -1
要使 ListBox 在更改窗口大小时调整大小,只需使用:
<ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" .../>
Run Code Online (Sandbox Code Playgroud)
要在 ListBox 中启用滚动,您可以在这里找到答案,因为 ListBox 的默认模板包含 ScrollViewer。
| 归档时间: |
|
| 查看次数: |
12547 次 |
| 最近记录: |