在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"/>

截屏:Screenshot

我希望带有滚动条的 ListView 具有适合内容的尺寸比例,并且仅在屏幕空间不足时才滚动。

有帮助吗?

解决方案

这是一个非常常见的问题...这 StackPanel不是 调整其内容的大小以适合父控件,就像 Grid 做。解决方案很简单...不要使用 StackPanel 除了最简单的排列一些控制职责之外。代替这个,使用 Grid 这将自动适应父控件提供的所有空间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top