在Windows 8.1应用程序(.NET 4.5)中,我(通过两个模板,因为Binding)一个Grid,其中包含一个包含ListView的StackPanel。 问题是,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>
ListView的模板
<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具有适合内容的大小比例,并且只有在屏幕空间用完时才滚动。
答案 0 :(得分:2)
这是一个非常常见的问题...... StackPanel
不会调整其内容的大小以适应像Grid
那样的父控件。解决方案很简单......除了最简单的排除一些控制职责外,不要使用StackPanel
。而不是使用Grid
,它将自动适应父控件提供的所有空间。