我有一个简单的.NET毛伊岛应用程序,并试图实现一个登录页面。目标不过是显示登录页面,当用户提交名称和密码时,它将转到视图模型,然后将用户传递给MainPage。这是可行的,但是当它到达MainPage时,就没有标签了。我的Appshell.xaml看起来是这样的:
<?xml version="1.0" encoding="UTF-8" ?>
<ShellItem>
<ShellContent ContentTemplate="{DataTemplate view:Login}" />
</ShellItem>
<TabBar >
<ShellContent
Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Icon="icon_home" />
<ShellContent
Title="About"
ContentTemplate="{DataTemplate local:About}"
Icon="icon_about" />
</TabBar>这个问题有明显的解决办法吗?
发布于 2022-11-01 17:49:48
以下是解决这个问题的一种方法:
App.xaml.cs中有一行MainPage = new AppShell();。用MainPage = new Login();.Application.Current.MainPage = new AppShell(); --最初在App.xaml.cs.中的行
注意:我不建议经常调用"new ()“。但是对于Login来说,将调用延迟到Login成功之后是可以的。
还请参阅H.A.H.'s answer,它展示了另一种方法,它不涉及直接更改MainPage。我自己还没有测试过这个答案。
发布于 2022-11-02 15:06:19
在TabBar中,我使用Tab,在它内部使用- ShellContent。
<TabBar>
<Tab Title="..."
Route="HomePage"
Icon="...">
<ShellContent
Title="..."
ContentTemplate="{DataTemplate view:HomePage}" />
</Tab>
</TabBar>登录后的导航发生在:
await Shell.Current.GoToAsync($"//{nameof(HomePage)}");不需要更改应用程序主页。Shell组件之间的导航非常好。尽量避免使用“新”这个词。这两个斜杠清除堆栈,因此用户无法导航回登录页,而不使用“注销”按钮。
(想一想,如果您需要将数据从登录页面、eula页面或其他内容传递到主页面,您将如何进行。然后告诉我构建AppShell是否明智.)
https://stackoverflow.com/questions/74269299
复制相似问题