.net NET MAUI是否可以实现像这样的覆盖页面?

eh57zj3b  于 2022-12-30  发布在  .NET
关注(0)|答案(1)|浏览(102)

您可以向下拖动它,它将关闭视图。

ymdaylpp

ymdaylpp1#

你正在寻找的关键字是“模态”. Afaik这些模态可以关闭原生ios拖动(至少上次我检查.),但找不到一个原生的方式来做它在maui.
但这里有一个解决方案,你可以建立为您的需要:
使用Shell像这样导航到您的页面。

Shell.Current.GoToAsync("/modalpage");

模式页面.xaml

<ContentPage
    x:Class="MauiApp.ModalPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    Title="Modal Page"
    BackgroundColor="Transparent"
    Shell.PresentationMode="Modal">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <Grid Grid.Row="0">
            <Grid.GestureRecognizers>
                <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped" />
            </Grid.GestureRecognizers>
        </Grid>

        <VerticalStackLayout Grid.Row="1" BackgroundColor="LightGray">

        <VerticalStackLayout.GestureRecognizers>
            <SwipeGestureRecognizer Direction="Down" Swiped="SwipeGestureRecognizer_Swiped" />
        </VerticalStackLayout.GestureRecognizers>

            <Label
                HorizontalOptions="Center"
                Text="Welcome to .NET MAUI!"
                VerticalOptions="Center" />
        </VerticalStackLayout>
    </Grid>

</ContentPage>

将内容页面背景设置为TransparentShell.PresentationMode="Modal"
我创建了一个2行的网格,所以我可以捕捉第一行的点击手势,在本例中,这是一个完全透明的行,我可以看到我的上一页。
您也可以执行滑动关闭操作,但这次您是在底部滑动布局,因此VerticalStackLayout将获得SwipeGestureRecognizer

模式页面.cs

private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
 {
     Shell.Current.GoToAsync("..");
 }

 private void SwipeGestureRecognizer_Swiped(object sender, SwipedEventArgs e)
 {
     Shell.Current.GoToAsync("..");
 }

相关问题