Xamarin.Forms 怎么拿到page左上角的返回事件

Xamarin.Forms 怎么拿到page左上角的返回事件。OnBackButtonPress虽然在page消失时会触发,但是在当page1到page2时,page1的OnBackButtonPress就会触发,这不是想要的。

img

引用chatgpt部分指引作答:
在 Xamarin.Forms 中,可以通过重写 OnBackButtonPressed 方法来处理页面的返回事件。但是,默认情况下,当从一个页面跳转到另一个页面时,前一个页面的 OnBackButtonPressed 方法也会被触发,这不是你所期望的行为。

为了解决这个问题,你可以使用 NavigationPage 的 Popped 事件来处理页面的返回事件。这样,只有当页面真正从导航堆栈中弹出时,才会触发返回事件。以下是一个示例:

// 在你的页面构造函数或其他适当的位置
public MyPage()
{
    InitializeComponent();
    
    // 获取 NavigationPage 实例
    var navigationPage = Application.Current.MainPage as NavigationPage;
    
    // 订阅 NavigationPage 的 Popped 事件
    navigationPage.Popped += OnPagePopped;
}

private void OnPagePopped(object sender, NavigationEventArgs e)
{
    // 在这里处理页面返回事件
    // 当页面从导航堆栈中弹出时,将会触发该事件
    // 你可以在这里执行你想要的逻辑
}

在 OnPagePopped 方法中,你可以执行任何你希望在页面返回时执行的逻辑。这样,你就可以避免在页面之间导航时触发不必要的返回事件。

希望这可以帮助到你!如有其他问题,请随时问我。

在Xamarin.Forms中,你可以使用以下代码来拦截导航栏左上角的返回事件:

protected override bool OnBackButtonPressed()
{
    // Do something here
    return true;
}

但是,这种方法会在页面消失时触发,而不是在导航到下一个页面时触发。如果您想在导航到下一个页面时拦截返回事件,可以使用以下代码:

protected override void OnAppearing()
{
    base.OnAppearing();

    var parentPage = Parent as NavigationPage;
    if (parentPage != null)
    {
        parentPage.Popped += OnPagePopped;
    }
}

protected override void OnDisappearing()
{
    base.OnDisappearing();

    var parentPage = Parent as NavigationPage;
    if (parentPage != null)
    {
        parentPage.Popped -= OnPagePopped;
    }
}

private void OnPagePopped(object sender, NavigationEventArgs e)
{
    // Do something here
}

这将在页面出现时订阅NavigationPage.Popped事件,并在页面消失时取消订阅。当用户从该页面导航回上一个页面时,OnPagePopped方法将被调用,你试下看行不


        private async void EntryCell_Tapped(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new FlowListPage());
        }

在Xamarin.Forms中,可以通过重写Page的OnBackButtonPressed方法来处理返回事件,然后按照你自己的逻辑来覆盖默认的返回行为

Android 的OnBackButtonPress方法只支持物理返回键调用,而导航栏左上角的返回是不会触发这个事件的。建议先定义一个BaseContentPage,MainPage跳转到Page2,配置EnableBackButtonOvereide=true,接着在MainActivity增加SetSupportActionBar配置,最后在MainActivity中捕抓导航栏返回菜单事件。
可以参考博文:https://blog.csdn.net/yhz815/article/details/103614195