Xaml 在Xamarin表单中折叠标签和列表视图

Xaml 在Xamarin表单中折叠标签和列表视图,xaml,xamarin.forms,Xaml,Xamarin.forms,我有一个相对简单的视图,看起来像这样: {Label1} {Label2} {ListView1} {Label3} {ListView2} {Label1} {Label3} {ListView2} <AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"> <Grid Horizo

我有一个相对简单的视图,看起来像这样:

{Label1}
{Label2}
{ListView1}
{Label3}
{ListView2}
{Label1}


{Label3}
{ListView2}
<AbsoluteLayout
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand">

    <Grid
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        AbsoluteLayout.LayoutFlags="All"
        AbsoluteLayout.LayoutBounds="0,0,1,1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label 
            Text="Title" 
            HorizontalOptions="Center"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Large"
            FontAttributes="Bold"
            Margin="5"
            BindingContext="{x:Reference DashboardPageView}"
            IsVisible="{Binding DisplayFloatingTitle}"
            Grid.Row="0" />

        <Label 
            Text="Notifications" 
            HorizontalOptions="Start"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasNotifications}"
            Grid.Row="1" />

        <ListView Grid.Row="2" 
                  ItemsSource="{Binding Notifications}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  IsVisible="{Binding HasNotifications}"
                  SeparatorVisibility="None" Margin="1,0"
                  x:Name="NotificationsList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ........
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Label 
            Text="Activities" 
            HorizontalOptions="Start"
            VerticalOptions="Start"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasActivities}"
            Grid.Row="3" />

        <ListView Grid.Row="4" 
                  ItemsSource="{Binding Activities}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  SeparatorVisibility="None" Margin="4,0"
                  x:Name="ActivitiesList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ....
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</AbsoluteLayout>
Label2和ListView1的IsVisible属性绑定到bool属性。如果为false,则它们不会出现,但会占用UI上的空间,这意味着Label1和Label3之间存在相当大的差距,如下所示:

{Label1}
{Label2}
{ListView1}
{Label3}
{ListView2}
{Label1}


{Label3}
{ListView2}
<AbsoluteLayout
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand">

    <Grid
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        AbsoluteLayout.LayoutFlags="All"
        AbsoluteLayout.LayoutBounds="0,0,1,1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label 
            Text="Title" 
            HorizontalOptions="Center"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Large"
            FontAttributes="Bold"
            Margin="5"
            BindingContext="{x:Reference DashboardPageView}"
            IsVisible="{Binding DisplayFloatingTitle}"
            Grid.Row="0" />

        <Label 
            Text="Notifications" 
            HorizontalOptions="Start"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasNotifications}"
            Grid.Row="1" />

        <ListView Grid.Row="2" 
                  ItemsSource="{Binding Notifications}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  IsVisible="{Binding HasNotifications}"
                  SeparatorVisibility="None" Margin="1,0"
                  x:Name="NotificationsList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ........
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Label 
            Text="Activities" 
            HorizontalOptions="Start"
            VerticalOptions="Start"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasActivities}"
            Grid.Row="3" />

        <ListView Grid.Row="4" 
                  ItemsSource="{Binding Activities}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  SeparatorVisibility="None" Margin="4,0"
                  x:Name="ActivitiesList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ....
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</AbsoluteLayout>
我如何让它们看起来像这样:

{Label1}
{Label3}
{ListView2}
我的XAML代码如下所示:

{Label1}
{Label2}
{ListView1}
{Label3}
{ListView2}
{Label1}


{Label3}
{ListView2}
<AbsoluteLayout
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand">

    <Grid
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        AbsoluteLayout.LayoutFlags="All"
        AbsoluteLayout.LayoutBounds="0,0,1,1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label 
            Text="Title" 
            HorizontalOptions="Center"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Large"
            FontAttributes="Bold"
            Margin="5"
            BindingContext="{x:Reference DashboardPageView}"
            IsVisible="{Binding DisplayFloatingTitle}"
            Grid.Row="0" />

        <Label 
            Text="Notifications" 
            HorizontalOptions="Start"
            VerticalOptions="Center"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasNotifications}"
            Grid.Row="1" />

        <ListView Grid.Row="2" 
                  ItemsSource="{Binding Notifications}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  IsVisible="{Binding HasNotifications}"
                  SeparatorVisibility="None" Margin="1,0"
                  x:Name="NotificationsList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ........
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Label 
            Text="Activities" 
            HorizontalOptions="Start"
            VerticalOptions="Start"
            TextColor="White"
            FontSize="Medium"
            FontAttributes="Bold"
            Margin="3"
            IsVisible="{Binding HasActivities}"
            Grid.Row="3" />

        <ListView Grid.Row="4" 
                  ItemsSource="{Binding Activities}" 
                  HasUnevenRows="True" 
                  VerticalOptions="Start"
                  SeparatorVisibility="None" Margin="4,0"
                  x:Name="ActivitiesList">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        ....
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</AbsoluteLayout>

........
....

问题在于XAML中的这一行:

<RowDefinition Height="*" />

尝试使用第三排的
Height=“Auto”
,谢谢。你能给我一个答案吗。