1

我有一个关于 Xamarin StackLayout 和 ListView 的问题。

我在 StackLayout 中使用 Listview。Listview 包含 10 个项目,很容易超出 stacklayout 的高度。对于 StackLayout ,我使用了 OrientationVertical和 VerticalOptions 。FillAndExpand没有导航标题栏时,StackLayout 会正确展开。问题是当有导航标题栏时,Stacklayout 没有正确展开并且 Listview 项目正在缩小。还有其他人面临这个问题吗?

<ContentPage.Content>
        <StackLayout>    
            <StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" >
                <ListView
                  HasUnevenRows="True"  
                  ItemsSource="{Binding sampleList}"
                  CachingStrategy="RecycleElement">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                              <views:sampleView/>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackLayout>         
        </StackLayout>        
</ContentPage.Content>   

我尝试了以下提到的选项。
1)将高度请求设置为父堆栈布局。
    它适用于某些设备,但不适用于某些设备。
2) 通过设置如下所示的 Grid 行定义来使用 Grid 而不是 StackLayout。 <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> </Grid.RowDefinitions>     但这种变化也没有解决问题。
3) 使用 Scroll View 而不是 StackLayout
    这将起作用。但 Xamarin 建议我们不应将 ScrollView 与其他提供滚动的控件嵌套,如 ListView 和 WebView。(https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/scroll-view

4

1 回答 1

1

我有同样的问题,老实说我不知道​​原因,但在我的情况下,我必须删除 stackLayout 并将列表视图留在 ContentPage 中。

我想更具体地说明原因,但我只是想弄清楚是否能获得更多相关信息,我会告诉你的。

<ContentPage.Content>
    <ListView
        HasUnevenRows="True"  
        ItemsSource="{Binding sampleList}"
        CachingStrategy="RecycleElement">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <views:sampleView/>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage.Content>  
于 2020-08-11T01:34:52.803 回答