Xamarin.Forms:处理导航工具栏按钮(Shell)
Posted
技术标签:
【中文标题】Xamarin.Forms:处理导航工具栏按钮(Shell)【英文标题】:Xamarin.Forms: Handle Navigation toolbar button (Shell) 【发布时间】:2021-11-26 11:03:21 【问题描述】:我想在我的 Xamarin.Forms 应用程序(android 版)中处理任何后退点击。
对于 Android/硬件按钮非常简单,我所要做的就是重写 OnBackButtonPressed 方法。但是这个顶部工具栏并不那么容易。我听说它应该与 Shell.SetBackButtonBehavior 一起使用,但由于某种原因,它对我不起作用。
我的代码是这样的,在InitializeComponents()之后放在页面构造函数中。
Shell.SetBackButtonBehavior(this, new BackButtonBehavior
Command = new Command(async () =>
await Shell.Current.DisplayAlert("Back","Back","Back")
)
);
知道可能出了什么问题吗?
【问题讨论】:
【参考方案1】:该功能可以通过在xaml中定义Shell.BackButtonBehavior并在cs中实现Command来实现。
这是我的一个小例子:
在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>
在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;
【讨论】:
我确实复制了您的代码,但它不起作用。我像你一样尝试过(Xaml + xaml.cs)以及 viewModel(Xaml + VM)。但我就是不能让它工作.. 确保该页面不在shell中。 呃,“在外壳内”是什么意思? 当前页面不在Shell的“ShellContent”中。以上是关于Xamarin.Forms:处理导航工具栏按钮(Shell)的主要内容,如果未能解决你的问题,请参考以下文章
更改 Xamarin Forms Android 导航页面颜色(按钮和返回)
我们可以覆盖 Xamarin.forms 中的 NAVIGATION BACK BUTTON 按下吗?
在 Xamarin Forms iOS 13+ 应用程序中设置导航栏按钮上的字体