简体   繁体   English

Xamarin.Forms:处理导航工具栏按钮(外壳)

[英]Xamarin.Forms: Handle Navigation toolbar button (Shell)

I want to handle any back clicks in my Xamarin.Forms application (android version).我想处理我的 Xamarin.Forms 应用程序(android 版本)中的任何返回点击。

For Android/hardware button was pretty easy, all I had to do was override OnBackButtonPressed method.对于 Android/硬件按钮非常简单,我所要做的就是覆盖 OnBackButtonPressed 方法。 But this top toolbar is not that easy.但是这个顶部工具栏并不那么容易。 I heard that it should work with Shell.SetBackButtonBehavior, but for some reason, it doesn't work for me.我听说它应该与 Shell.SetBackButtonBehavior 一起使用,但由于某种原因,它对我不起作用。

My code is like this, I put it in the page constructor after the InitializeComponents().我的代码是这样的,我把它放在了InitializeComponents()之后的页面构造函数中。

Shell.SetBackButtonBehavior(this, new BackButtonBehavior {
            Command = new Command(async () =>
                await Shell.Current.DisplayAlert("Back","Back","Back")
            )
        });

Any idea what could be wrong?知道有什么问题吗?

The function can be realized by defining Shell.BackButtonBehavior in xaml and implementing Command in cs.该功能可以通过在xaml中定义Shell.BackButtonBehavior ,在cs中实现Command来实现。

Here is a small example of mine:这是我的一个小例子:

In xaml:在xml中:

<Shell.BackButtonBehavior>
    <BackButtonBehavior Command="{Binding GoBack}" >
    </BackButtonBehavior>
</Shell.BackButtonBehavior>
<ContentPage.Content>
    <StackLayout>
        <Label Text="Welcome to Xamarin.Forms!"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage.Content>

In cs:在 cs 中:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Page2 : ContentPage
{
    public ICommand GoBack { get; set; }
    public Page2()
    {
        InitializeComponent();
        GoBack = new Command(async () =>
            await Shell.Current.DisplayAlert("Back", "Back", "Back"));
        BindingContext = this;
    }
    
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM