【问题标题】:ListView inside StackPanel inside Grid doesn't scaleGrid 内 StackPanel 内的 ListView 无法缩放
【发布时间】:2013-11-15 21:15:57
【问题描述】:

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

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 具有适合内容的大小比例,并且只有在屏幕空间不足时才滚动。

【问题讨论】:

    标签: wpf wpf-controls windows-8.1


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-07
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多