Вместо использования <StackLayout>
я бы предложил использовать <Grid>
для достижения такого типа макета:
Код Xaml:
<Grid RowSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="50" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<StackLayout Grid.Row="0">
<maps:Map WidthRequest="960" HeightRequest="200"
x:Name="MyMap" IsShowingUser="true"/>
</StackLayout>
<StackLayout Grid.Row="1">
<Label Text="Show List" TextColor="LightGray">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"/>
</Label.GestureRecognizers>
</Label>
</StackLayout>
<StackLayout Grid.Row="2" x:Name="listSection" IsVisible="false" HeightRequest="200">
<ListView x:Name="ListView_Pets"/>
</StackLayout>
</Grid>
Код позади:
private bool isListVisible;
void OnTapGestureRecognizerTapped(object sender, EventArgs args)
{
isListVisible = !isListVisible;
listSection.IsVisible = !isListVisible;
}
Вы можете обновить логику show hide, используя привязку, если вы используете MVVM Framework.