Grid 内 StackPanel 内的 ListView 无法缩放
-
20-12-2019 - |
题
在Windows 8.1应用程序(.NET 4.5)中,我有(由于绑定而跨两个模板)一个网格,其中包含一个StackPanel,其中包含一个ListView。问题是,ListView 不随可用空间缩放,而是显示滚动条。
<Grid DataContext="{Binding}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/> <!-- IF I set MinHeight here, it grows -->
</Grid.RowDefinitions>
<TextBlock Grid.Row="0"/>
<ListView
Grid.Row="1"
Margin="10"
ItemsSource="{Binding ementas}"
ItemTemplate="{StaticResource temp1}"
SelectionMode="None"
IsItemClickEnabled="False"
IsSwipeEnabled="False">
</ListView>
</Grid>
列表视图的模板
<StackPanel Width="310" Margin="5,10,5,10" DataContext="{Binding}">
<TextBlock Text="{Binding data}" Style="{StaticResource TitleTextBlockStyle}"/>
<ListView SelectionMode="None"
IsItemClickEnabled="False"
ItemsSource="{Binding pratos}"
ItemTemplate="{StaticResource temp2}"
IsSwipeEnabled="False">
</ListView>
</StackPanel>
以及第二个 ListView 的模板
<TextBlock Text="{Binding descricao}"
Margin="5"
Style="{StaticResource BodyTextBlockStyle}"
TextWrapping="WrapWholeWords"/>
截屏:
我希望带有滚动条的 ListView 具有适合内容的尺寸比例,并且仅在屏幕空间不足时才滚动。
解决方案
这是一个非常常见的问题...这 StackPanel
做 不是 调整其内容的大小以适合父控件,就像 Grid
做。解决方案很简单...不要使用 StackPanel
除了最简单的排列一些控制职责之外。代替这个,使用 Grid
这将自动适应父控件提供的所有空间。
不隶属于 StackOverflow