Xamarin Forms with Prism:从堆栈中删除页面

2024-03-15

当我从页面 A 导航到页面 B 时,我需要删除页面 A。

如何使用 Xamarin Forms 中的 Prism 导航服务执行此操作?


人们在这方面会遇到一些场景。

举一个常见的例子,假设您有一个登录页面,一旦用户成功登录,您想要导航到主页。您的代码可能如下所示:

public class App : PrismApplication
{
    protected override async void OnInitialized()
    {
        await NavigationService.NavigateAsync("LoginPage");
    }

    protected override void RegisterTypes()
    {
        Container.RegisterTypeForNavigation<LoginPage>();
        Container.RegisterTypeForNavigation<MainPage>();
    }
}

public class LoginPageViewModel : BindableBase
{
    public DelegateCommand LoginCommand { get; }

    private async void OnLoginCommandExecuted()
    {
        // Do some validation

        // Notice the Absolute URI which will reset the navigation stack
        // to start with MainPage
        await _navigationService.NavigateAsync("/MainPage");
    }
}

现在,如果您正在寻找的是导航堆栈看起来像的一些流程MainPage/ViewA你想要的是MainPage/ViewB并且您不想重新初始化 MainPage,那么这是我们当前正在评估并希望改进的内容,因此您可以执行类似的操作_navigationService.NavigateAsync("../ViewB")。同时我可能建议是这样的:

public class ViewAViewModel : BindableBase
{
    public DelegateCommand ViewBCommand { get; }

    private async void OnViewBCommandExecuted()
    {
        var parameters = new NavigationParameters
        {
            { "navigateTo", "ViewB" }
        };

        await _navigationService.GoBackAsync(parameters);
    }
}

public class MainPageViewModel : BindableBase, INavigatedAware
{
    public async void OnNavigatingTo(NavigationParameters parameters)
    {
        if(parameters. GetNavigationMode() == NavigationMode.Back && 
           parameters.TryGetValue("navigateTo", out string navigateTo))
        {
            await _navigationService.NavigateAsync(navigateTo);
            return;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin Forms with Prism:从堆栈中删除页面 的相关文章

  • Prism的RegionManager视图切换性能

    我正在对使用 PRISM 库编写的 WPF 应用程序进行性能分析 在此应用程序中 从一个视图导航到另一视图特别慢 尤其是在远离 重 视图时 注意 来回导航时视图会被缓存并且不会重新构造 PRISM 将所有视图保留在 SingleActive
  • xamarin.forms 中的导航如何工作?

    由于我在 android 中的应用程序中使用 xamarin forms 因此我必须从一个页面导航到另一个页面 我的问题是 从一个页面导航到另一页面是否会将其添加到导航堆栈中 例如 如果我的应用程序有导航 例如第1页 gt 第2页 gt 第
  • 如何在xamarin表单中使用单选按钮

    创建注册页面 我需要从用户那里获取以下数据 名 姓 Username Email Password 出生日期 Gender 用户角色 对于最后两个参数 我无法找到如何在 Xamarin Forms 中使用单选按钮 以下是我的注册页面代码
  • Xamarin 表单从可绑定属性更新视图模型字段

    我觉得我错过了一些非常明显的东西 我有一个自定义控件 它有一个视图模型 其中包含一堆字段 但此示例中最重要的是文本值 我可以使用自定义控件 XAML 中的以下内容非常轻松地绑定到它
  • 如何从xamarin表单应用程序将图像上传到服务器

    我正在尝试使用 post 请求将图像从我的 xamarin 表单应用程序发送到 asp net core 服务器 我需要将图像保存在某个服务器文件夹中 但我做不到 这是我在 mediaFile 中选择图像后发送图像的方法 private a
  • 将多选列表框中的 SelectedItems 与 ViewModel 中的集合同步

    我在使用 prism 的 SL3 应用程序中有一个多选列表框 并且我的视图模型中需要一个集合 其中包含列表框中当前选定的项目 视图模型对视图一无所知 因此它无法访问列表框控件 另外 我需要能够从视图模型中清除列表框中的选定项目 不知道如何解
  • 如何在 XAML 上设置 ResourceDictionary FontSize?

    如果这会是一件混乱的事情 我深表歉意 我对 Xamarin 还很陌生 目前我正在尝试将此资源字典代码转换为 XAML Current Resources new ResourceDictionary FontResources Defaul
  • 减少 Xamarin.Forms 中的 APK 大小,APK 大小 80MB

    无法将 xamarin apk 大小减少到 80 MB 以下 执行以下操作 启用混淆器 配置 发布 平台 活动 任何 CPU 启用 Multi Dex true 启用开发人员检测 调试和分析 false 链接 SDK 和用户程序集 也仅尝试
  • 使用 Xamarin.Forms 和 .net Standard 进行 Firebase 电子邮件/密码身份验证 (VS2017)

    Firebase 电子邮件 密码身份验证是否可以使用通用代码 net 标准的 Android 和 IOS 通用代码进行开发 我已经设计了具有 XAML 格式的简单登录页面 但我没有找到任何与 Firebase 身份验证与 Xamarin F
  • 如何使用 MvvmCross 创建 MasterDetailPage?

    我正在尝试使用 MvvmCross 开发 Xamarin Forms 应用程序 并且我想使用汉堡菜单 MasterDetailPage 但我不知道该怎么做 我尝试了不同的方法 搜索教程和示例 但没有成功 谁能帮我 正如你在这里看到的Mvvm
  • 初始化组件不存在

    InitializeComponent 此代码行出现在我的所有 Xaml 页面的构造函数中的代码隐藏中 它抛出以下错误 初始化组件不存在 现在我无法调试项目中的任何页面 尽管我已经注释掉了这一行 我怎样才能解决这个问题 任何帮助将不胜感激
  • 如何在MVVM架构中将animationview play与LottieForms绑定?

    所以我在列表视图中处理动画 并且我想随时播放一次 所以我想控制它 这是图书馆https github com martijn00 LottieXamarin https github com martijn00 LottieXamarin
  • 更改 Windows Phone 8.1 的 Xamarin Forms 中 Picker 控件的默认文本颜色

    我正在使用 Xamarin Forms 选择器控件并需要设置文本颜色 但是没有这样的属性 我尝试制作一个自定义渲染器 它在 android 和 ios 中对我有用 我最终重新绘制了控件 在wp8 1平台中没有Draw事件并且渲染器中的控件本
  • 为选择器中的项目添加键值

    我正在使用 XAMARIN 选择器来选择一个国家 地区 这些国家 地区在选择器中进行了硬编码 有没有一种方法可以通过键值识别每个国家 地区名称 我使用 SAPUI5 以类似的方式完成了此操作
  • Xamarin 中 QR 扫描后的处理对话框

    我在Xamarin应用程序中使用QR码扫描仪 当它扫描QR码时 它会执行一些操作 大约需要一分钟 而在执行操作时 我想在屏幕上显示一个加载对话框 但是 它没有显示在屏幕上 并且在应用程序的其他地方 它运行得很好 Code var expec
  • 应用程序被终止时无法处理 FCM 消息

    我一直在阅读各种教程 其他 SO 线程以及官方 Android 开发人员和 Firebase 文档 但无济于事 我已经尝试了几乎所有的方法 但我已经耗尽了精力和时间 因为我正在修复以前可以工作但现在不再工作的通知系统 我正在使用 Azure
  • 如何确定 Xamarin Forms 中点击的位置?

    在 Xamarin Forms 中 如何找出点击的位置 例如在图像内 我的代码是 var tapGestureRecognizer new TapGestureRecognizer tapGestureRecognizer Tapped O
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • Xamarin.Forms:Oxyplot 占据整个页面

    我已在 Xamarin Forms 中使用 oxyplot 成功生成了一个绘图 但我无法阻止 oxyplot 占据整个页面 我在轮播中的其他页面上使用 stacklayout 并在每个页面上有一个横幅作为嵌入的 stacklayout 并希
  • 使用 Xamarin Forms 显示图像

    Solved 答案是更新所有 nuget 软件包并针对较新版本的 Android 现在图像按预期加载 我对此并不满意 因为我完全使用了 Xamarin 提供的代码 并且针对较新的版本已弃用了代码所依赖的一些项目 初始版本是 Xamarin

随机推荐