c# - 当我在 TabbedPage ViewModels 中使用 PopAsync 时,它不起作用
问题描述
好的,所以在我之前的设计中,在我的 MainPage 上,它被称为 TasksGroupPage,我有一个“+”图标,它把我带到一个 NewTasksGroupPage 来填写表格,然后单击保存命令来创建一个新的 TasksGroup(所以我不需要 + 图标功能来加载页面了)。
这工作得很好,单击保存按钮后,它会将我带到 MainPage。
但我的问题是我改变了我的设计,我现在删除了 + 图标,而是创建了一个新选项卡,现在将我带到 NewTasksGroupPage。
要创建此选项卡,我只需将以下代码添加到我的 TasksGroupPage(主页):<views:NewTasksGroupPage></views:NewTasksGroupPage>
现在的问题是: 当我在我的 NewTaskPageViewModel 中单击保存命令时,该页面不会像之前那样将我带到最后一页,它会将所有文本留在输入框中,它只会在之后创建我的 TasksGroupPage尽管。
我应该如何设置这个新设计才能正常工作?如果不可能,有没有办法将 GestureRecognizers 添加到其中一个选项卡?
谢谢。
在这里你现在可以看到我的代码:
TasksGroupPage.xaml
<TabbedPage>
<ContentPage>
// some xaml
</contentPage>
<views:NewTasksGroupPage></views:NewTasksGroupPage>
</TabbedPage>
TasksGroupPage.xaml.cs 这是我不再需要的功能,但这是我与 + 图标一起使用的功能
protected async void GoToNewTaskPage(object sender, EventArgs e)
{
await Navigation.PushAsync(new Views.NewTasksGroupPage());
}
NewTaskPageViewModel.cs 这是我的保存命令的结尾,之前将我带到主页(TasksGroupPage),但现在它只是停留在那里并且不会将我的条目重置为空白(即使在其他选项卡式页面之间切换时)
async Task SaveNewTask()
{
//some code
await Application.Current.MainPage.DisplayAlert("Save", "La tâche a été enregistrée", "OK");
await Application.Current.MainPage.Navigation.PopAsync();
NotifyPropertyChanged();
}
解决方案
如果您阅读文档 Xamarin.Forms Navigation:
你会发现 NavigationPage 和 TabbedPage 是在 Xamarin.forms 中导航页面的两种不同方式。
Navigation.PushAsync
并且Navigation.PopAsync
只在 NavigationPage 中有效,在 TabbedPage 中无效,这就是为什么the page doesn't take me to the last page like it did before
.
如果你使用 TabbedPage,你可以使用下面的代码来切换页面:
async void SaveNewTask(object sender, EventArgs args)
{
//this here means the current ContentPage
//this.Parent = NavigationPage
var tabbedPage = this.Parent.Parent as TabbedPage;
//if you don't have navigationPage, just use:
//var tabbedPage = this.Parent as TabbedPage;
//Switch to first page in tabs
tabbedPage.CurrentPage = tabbedPage.Children[0];
}
推荐阅读
- fonts - FontNames 未显示 Windows 的“全名”——如何获取 rtf 输出的全名
- spring-boot - CICD spring boot 应用与 gitlab-ci.yml
- python - 像 JavaScript encodeURIComponent() 那样在 python 中编码 SVG 图像
- python - Float 中的错误不能解释为旧代码中的整数
- routes - 某个特定网站在使用 Wi Fi 几天后停止工作
- python-3.x - 如何制作杂货收据程序
- java - 这种颜色编码叫什么名字?§e§l
- html - 转换为链接时 HTML 文本消失
- json - 在 Visual Studio 代码中显示已安装主题的列表
- time-complexity - 摊销时间复杂度