wpf - 让 ListBox 随窗口调整大小,但不随内容调整大小

标签 wpf xaml listbox grid sizetocontent

这个问题一定有一个优雅的解决方案,但我在网上找不到任何东西。我有一个网格,它有一列和一行的宽度/高度*,包含一个列表框。我将 Window SizeToContents 设置为 WidthAndHeight 以允许窗口调整为每组 UI 小部件/字体的适当大小。当我将项目添加到 ListBox 时,它会调整大小,导致窗口变大。

如果我更改窗口的大小,我希望 ListBox 调整大小,但是如果我添加的内容比 ListBox 的宽度长,我希望滚动条出现而不是让它增长,从而导致窗口增长。如果我为 Window 设置显式大小并将 SizeToContent 设置为 Manual(默认值),它会按我的意图工作。

有没有办法在启动时根据内容调整窗口大小并继续让 ListBox 随窗口大小而不是其内容而增长?

最佳答案

按照 Potecaru Tudor 的建议,我通过将 ListBox 包装在另一个容器中并将 ListBox 的高度绑定(bind)到容器的 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>

基本上,Border 容器在其内容增长时不会增长,但会一直拉伸(stretch)到网格行的高度。网格行将填满包含窗口允许的任何空间,但不希望在窗口上强制任何高度限制。 ListBox 的高度因此被限制为边框的高度。

希望对遇到这个令人沮丧的问题的其他人有所帮助。

关于wpf - 让 ListBox 随窗口调整大小,但不随内容调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200406/

相关文章:

Silverlight DataGrid 行颜色绑定(bind)

wpf - 为什么选项卡控件在更改选项卡时重用 View 实例

C# WPF 在不知道列的情况下将数据网格列大小设置为自动

wpf - 如何更改DocumentViewer的查看模式

javascript - 使用jquery取消确认后如何防止更改选择选项?

wpf - 帮助将命令参数绑定(bind)到相关源

php - MySQL - 列表菜单/组合框

.net - View 或 View 模型哪个先出现?

c# - 你如何制作一个完全方形的按钮?

wpf - 从文本框中删除时检测属性更改