Listview在Universal App Windows 10中正确调整大小

时间:2015-12-07 04:39:49

标签: c# win-universal-app

我有一个XAML页面,该页面按照以下格式分解:

<Grid Background="Green">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
 </Grid>

第一行和第三行各包含一个TextBlock,并设置为自动调整其高度,ListView包含在中间行,并且假设在该区域内拉伸。

ListView似乎根据项目数量调整大小,而不是应该分配给中间行的可用可见区域。

这有两个副作用:

  1. 我无法滚动查看其他项目
  2. 它将第三行中的TextBlock推出屏幕。
  3. 如果我在ListView上设置了一个特定的高度,它按预期工作,但我希望我的ListView使用顶部和底部行之间的整个屏幕区域。

    它在IDE中按预期显示,但没有加载数据,但我可以清楚地看到我的顶行和底行(绿色),我可以看到ListView在这两行之间拉伸。

    我过去曾经多次使用这个版本,但是使用适用于Windows 10的通用应用程序,所以我想知道这是一个我不知道的新行为,还是这个bug ?

    为了清楚起见,这是没有DataTemplate的完整代码。为了清楚起见,我的DataTemplate显示正确,但我无法滚动,因为没有滚动条,因为listview根据项目进行拉伸,而不是限制在中间行的可用区域。

    <Grid Background="Green">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Text="Top Row" />
        <ListView ItemsSource="{Binding Items}" 
                  Grid.Row="1" 
                  Background="Red">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                         ....
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <TextBlock Text="bottom row" Grid.Row="2"/>
    </Grid>
    

2 个答案:

答案 0 :(得分:0)

您需要将ListView包装在ScrollView中。这将填充空白区域并添加滚动条,因为列表溢出空白区域。

答案 1 :(得分:0)

我弄明白了这个问题。这不是行为改变或错误!

正如有人提到他们试图重现问题并且无法解决问题,我决定这样做。

  1. 当我将网格和ListView直接放在MainPage上时,我无法重现它。

  2. 当我将网格和ListView放在子页面(即GridPage)上并将其加载到MainPage中包含的框架中时,我无法重现它

  3. 一分钱掉下来的那个!!

    在我的代码中,我使用(第一次)一个SplitView,这个SplitView包含在一个有2行的网格中,愚蠢地将两行都设置为&#34; Auto&#34;当我应该为我的汉堡菜单,徽标和标题设置第一个自动,第二个应该设置为&#39; *&#39;。

    第二次我将第二行更改为&#39; *&#39;,问题已排序。它与包含我最初发布问题的网格的网格页面无关。

    UIImage

    以下是完整代码:

    NSUserDefaults

    再次感谢您的反馈/帮助。非常感谢!