wpf - 如何使 WPF ListView 不高于其内容但适合其他控件的窗口?

标签 wpf listview wpf-controls autoresize docking

我正在尝试按如下方式安排 WPF UI:

Mock up

  • 在窗口的顶部是一些自定高度的控件(有效地停靠在窗口的顶部,但只要他们想要的高度)。
  • 在这些控件下面是一个 ListView。 ListView 可能包含可变数量的项目,每个项目的高度各不相同。 问题: ListView 不能比它需要的高。如果 ListView 中的所有项目都可以轻松放入窗口中,我希望 ListView 正好是显示其所有项目的高度(因此窗口看起来像一个网页的流动布局,底部有空白空间)。另一方面,如果所有 ListView 项目都不适合窗口,我希望整个 UI 适合窗口(就像数字 3
    下面停靠在窗口底部,并且 ListView 正在填充可用空间)。当用户调整窗口大小和/或按下更改 ListView 内容的按钮时,这一切都必须动态调整。
  • 在 ListView 下方是更多的自定高度控件。这些必须始终直接出现在 ListView 下,没有间隙。特别是,如果它们直接适合 ListView,它们不能只是停靠在窗口底部。

  • 非常欢迎解决方案;我已经摆弄了一段时间并设法使事情正常工作除了 ListView 下方的控件,通过在窗口中使用外部 DockPanel,第一个控件停靠在顶部,ListView 填充剩余空间但设置为 VerticalAlignment="Top"。

    纯 XAML 解决方案将是理想的,但如果不可避免,我不介意背后的代码。允许多个此类布置垂直堆叠的解决方案的加分点:) 感谢您的帮助!

    最佳答案

    尝试

    <Grid VerticalAlignment="Top">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
    
        </Grid.RowDefinitions>
    
        <Button Content="hello" />
        <ScrollViewer Grid.Row="1" >
        <ListView >
                <ListBoxItem Content="hi" />
                <ListBoxItem Content="hi" />
                <ListBoxItem Content="hi" />
                <ListBoxItem Content="hi" />
                <ListBoxItem Content="hi" />
                <!-- Some Items -->
        </ListView>
        </ScrollViewer>
        <Button Content="hello" Grid.Row="2" />
    
    </Grid>
    

    关于wpf - 如何使 WPF ListView 不高于其内容但适合其他控件的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319711/

    相关文章:

    android - 无法滚动 ListView

    android - 对用于显示列表的 Textview 和 Listview 感到困惑

    java - 如何膨胀多张卡片 View 布局

    wpf 删除数据网格左填充

    wpf - 安装成功后,WPToolkit 未出现在引用中

    c# - 从 XAML 内部创建 C# 类的实例

    c# - 如何在 WPF 应用程序中从命令行运行 Python 脚本

    c# - WPF `ComboBox` ItemsSource 属性已更改 SelectedItem 属性被设置为 null

    c# - 提高 WPF 控件加载资源的性能

    .net - 通过 hWnd 获取 WPF 窗口