在我的.net maui应用程序中,我有一个名为“AboutHelp”的帮助页面,我想从更多其他页面导航到该页面。如何做到这一点?我的问题是,当我从主页“MainPage”以外的页面导航到AboutHelp页面时,后退箭头按钮不起作用。
如果我使用以下命令导航到名为“控制面板”的页面
[RelayCommand]
public async Task ControlsButton_Clicked()
{
var prams = new Dictionary<string, object>
{
{
"BtnSaveAllRawTxtAsIsEnbled"
,
BtnSaveAllRawTxtAsIsEnbled
},
{
"ButtonSaveAllTextAsIsEnabled"
,
ButtonSaveAllTextAsIsEnabled
},
{
"ButtonClearIsEnabled"
,
ButtonClearIsEnabled
},
{
"ButtonIDoIsEnabled"
,
ButtonIDoIsEnabled
},
{
"FormulaHolderIsEnabled"
,
FormulaHolderIsEnabled
}
};
await Shell.Current.GoToAsync
(
nameof(ControlPanel)
, true
, prams
);
}
然后使用以下命令导航到AboutHelp页
[RelayCommand]
public void HelpClicked()
{
_ = Shell.Current.GoToAsync($"//{nameof(ControlPanel)}/{nameof(AboutHelp)}", true);
}
返回箭头按钮从AboutHelp页面返回到ControlPanel页面,但ControlPanel页面上方没有返回箭头按钮。
我的AppShell.xaml.cs看起来像这样:
namespace PdfCalculator;
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute(nameof(MainPage), typeof(MainPage));
Routing.RegisterRoute(nameof(ControlPanel), typeof(ControlPanel));
Routing.RegisterRoute(nameof(AboutHelp), typeof(AboutHelp));
Routing.RegisterRoute(nameof(LineChartView), typeof(LineChartView));
}
}
从主页导航到控制面板,再导航到AboutHelp
将期望返回箭头按钮(工作)的所有网页。
1条答案
按热度按时间relj7zay1#
我在ControlPanel页面新建了一个项目来测试
Shell.Current.GoToAsync($"//{nameof(ControlPanel)}/{nameof(AboutHelp)}", true);
,但是没有任何问题,无法从ControlPanel页面导航到AboutHelp页面。根据官方关于绝对路线的文件:
诸如
await Shell.Current.GoToAsync("//animals/monkeys");
之类的代码用于导航到猴子路由的页面,路由在ShellContent对象上定义。表示猴子路由的ShellContent对象是FlyoutItem对象的子对象,其路由是animals但是在您注册路由的代码中,AboutHelp Page不是ControlPanel Page的子页面,所以您可以直接尝试使用
Shell.Current.GoToAsync({nameof(AboutHelp), true)
。此外,导航返回按钮有一个bug。当你在AppShell.xaml和AppShell.xaml.cs中注册路由时。例如同时使用
<ShellContent Route="MainPage" ContentTemplate="{DataTemplate local:MainPage}" />
和Routing.RegisterRoute(nameof(MainPage), typeof(MainPage));
。返回按钮将从导航堆栈中的第三页起不起作用。你需要删除<ShellContent>
中的Route="MainPage"
。有关详细信息,您可以参考AppShell-无法返回导航的案例。