我有一个ListView,它显示两个滚动条。为此,我将ListView放在网格中的边界中,如下所示:
<Window ...
MinWidth="600" MinHeight="500" Width="800" Height="500"
Topmost="True"
WindowStartupLocation="CenterScreen"
SizeToContent="Height" WindowStyle="None">
<Window.Resources>
<ResourceDictionary>
...
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" MinHeight="60"/>
<RowDefinition Height="48"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition Height="370"/> <-- THIS IS HARDCODED TO 370 BUT I NEED IT TO BE RESIZABLE
</Grid.RowDefinitions>
<Grid Margin="5,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4"/>
<ColumnDefinition Width="346*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding MyName}" Grid.Column="1"
Style="{StaticResource MyNameStyle}" Margin="0,5,0,5" />
</Grid>
<Border BorderBrush="{StaticResource MyBrush}" Grid.Row="1" Grid.Column="0" >
<ListView
x:Name="lstMyListView"
Margin="0,0,0,0"
BorderBrush="Transparent"
ItemsSource="{Binding MyItems}"
SelectedIndex="0"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto">
...
...
</ListView>
...
...
</Border>
...
...
</Grid>
</Grid>
</Window>这一切都是以可调整大小的形式进行的。因此,ListView也应该调整大小,但是只有当用户调整表单大小时,它才应该这样做。上面的硬编码值的问题很明显,ListView不会调整大小,而是保持不变的height=370。
我知道我可以将其设置为370*,但在这种情况下,我的列表将调整大小以适应所有项目。我希望限制这一点,以便只有当用户调整窗体大小时才会进行调整。因此,如果有更多的项,ListView应该显示滚动条,并且当用户调整窗体大小时,如果窗体的大小调整到能够容纳ListView中所有项的高度,该滚动条就会消失。
更新:我尝试将高度设置为、Auto和370,而不是硬编码上面的370。所有这些都将扩展ListView (因此也包括表单),以容纳ListView中的所有项。
更新2:更新XAML以显示整个树结构。
更新3:按照瑞秋的建议,将上面注释行中的硬编码370XAML设置为"*“,这会产生调整表单的大小,从而使ListView适合其中的所有项目。我添加了屏幕截图,显示表单打开时的样子,以及显示打开时应该是什么样子的截图。正如你所看到的,它可以调整大小来容纳所有的信息。
我需要的是表单和ListView保持它们的设置大小,并且只有当用户调整表单大小时才调整大小。

发布于 2016-05-27 13:38:45
如果我正确理解您的问题,您是说表单加载太大了,因为ListView正在增长到它的高度。如果是这样的话,从SizeToContent="Height"标记中删除<Window>,因为它使窗口的初始高度等于该内容的任何高度,其中包括全尺寸的ListView。
发布于 2021-06-03 06:27:22
通过设置ScrollViewer.VerticalScrollBarVisibility="Visible“& MaxHeight="700”滚动条,任何值都可以看到MaxHeight
发布于 2016-05-26 17:57:22
嗨,我想我理解你了。所以,我试着:
因此,您希望ListView的高度至少为370,如果窗口调整大小(窗口大小的增加和减小),则只有调整大小。
设置第二个RowDefinition的RowDefinition可能会有所帮助
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition MinHeight="370"/> <!-- THIS IS HARDCODED....-->
</Grid.RowDefinitions>
.....
</Grid>谢谢。
https://stackoverflow.com/questions/37465077
复制相似问题