OnBackButtonPressed没有触发Xamarin表单

时间:2017-06-02 10:52:12

标签: c# xaml xamarin xamarin.forms

我试图阻止我的应用用户按下硬件后退按钮。 我在xaml文件后面的代码中找到了这段代码:

protected override bool OnBackButtonPressed()
    {
        return true;
    }

我尝试过各种变体,包括使用布尔而不是Bool并返回base.functionname似乎没有任何东西可以触发此方法。 这是更大的背景:

代码背后:

namespace Watson.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class StartScan : ContentPage
    {
        public StartScan()
        {
            InitializeComponent();
        }
        protected override bool OnBackButtonPressed()
        {
            return true;
        }
    }
}

这是堆栈中的第二页,禁用该按钮只需要在此页面上进行,不能在其他地方进行。

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:1)

这对我有用,我在Android和iOS平台上尝试使用Xamarin.Forms。

希望你能解决这段代码。

namespace Test
{
    public partial class TestPage2 : ContentPage
    {
        public TestPage2()
        {
           NavigationPage.SetHasBackButton(this, false);
           InitializeComponent();
        }

        protected override bool OnBackButtonPressed()
        {
            //return base.OnBackButtonPressed();
            return true;
        }
    }
}

谢谢,

答案 1 :(得分:1)

您还可以在XAML中添加NavigationPage.SetHasBackButton属性

     NavigationPage.HasBackButton="True"

在内容页面中

答案 2 :(得分:1)

对我来说,它正在使用以下代码(三星Android)

protected override bool OnBackButtonPressed()
{
    //base.OnBackButtonPressed();
    browser.GoBack();
    return true;
}

答案 3 :(得分:0)

您可以这样:

namespace Watson.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class StartScan : ContentPage
    {
        public StartScan()
        {
            NavigationPage.SetHasBackButton(this, false);
            InitializeComponent();
        }
        protected override bool OnBackButtonPressed()
        {
            // you can put some actions here (for example, an dialog prompt, ...)
            return true;
        }
    }
}

答案 4 :(得分:0)

当您单击设备上的后退按钮(而不是从导航页面上)时,触发OnBackButtonPressed,请在OnDisappearing中执行您的逻辑!