news 2026/4/16 14:47:38

Prism框架中`IConfirmNavigationRequest` 导航

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Prism框架中`IConfirmNavigationRequest` 导航

在Prism框架中,IConfirmNavigationRequest是导航相关的核心接口(继承自INavigationAware),以下这四个方法是Prism导航生命周期的关键回调,用于精细控制ViewModel的导航行为。下面逐一拆解每个方法的作用、触发时机和使用场景:

先明确接口继承关系

IConfirmNavigationRequest → INavigationAware(包含 IsNavigationTarget/OnNavigatedFrom/OnNavigatedTo)

也就是说:

  • INavigationAware是基础导航接口,定义了导航的“基础生命周期”;
  • IConfirmNavigationRequest是增强接口,额外提供“导航确认”能力(防止意外导航)。

1. IsNavigationTarget(NavigationContext navigationContext)

核心作用

判断当前ViewModel实例是否复用,用于“导航复用”控制(Prism默认会复用ViewModel实例)。

触发时机

当导航到已存在的目标视图/ViewModel时触发(比如从A页面再次导航到已打开的B页面)。

返回值含义

  • true:复用当前ViewModel实例(不创建新实例,仅触发OnNavigatedTo);
  • false:销毁当前实例,创建新的ViewModel实例。

典型场景

  • 列表页→详情页→返回列表页:希望列表页保持之前的筛选/滚动状态 → 返回true
  • 每次导航到页面都需要全新数据 → 返回false

示例代码

// 示例:每次导航都创建新实例(不复用)publicboolIsNavigationTarget(NavigationContextnavigationContext){returnfalse;}

2. OnNavigatedTo(NavigationContext navigationContext)

核心作用

导航进入当前页面/ViewModel时执行,是“页面加载后初始化数据”的核心方法。

触发时机

  • 首次导航到该ViewModel(新实例创建后);
  • 复用ViewModel时(IsNavigationTarget返回true);
  • 从其他页面返回当前页面时。

关键能力

通过navigationContext.Parameters获取导航参数(比如从上一页传递的ID、筛选条件)。

典型场景

  • 加载页面数据(如查询列表、初始化表单);
  • 接收上一页传递的参数;
  • 注册事件、启动定时器等。

示例代码

publicvoidOnNavigatedTo(NavigationContextnavigationContext){// 获取导航参数(比如从上一页传的PTId)if(navigationContext.Parameters.TryGetValue<int>("PTId",
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 5:59:53

SSM小微企业ERP软件物料需求模块设计55ss9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表系统项目功能&#xff1a;bom管理,订单信息,库存管理,mps信息,mrp信息基于 SSM 的小微企业 ERP 软件物料需求模块设计与实现一、研究背景与意义1. 研究背景随着小微企业数字化转型加速&#xff0c;传统的物料管理方式&#xff08;手工台账、Excel 记录&#xf…

作者头像 李华
网站建设 2026/4/16 5:59:52

一键隐藏,简直绝了!

软件介绍 男生电脑里总有些“小秘密”&#xff08;女生好像没有&#xff09;&#xff0c;这些“小秘密”最怕妈妈或者女朋友这类的人看到&#xff0c;所以最好的办法是把这些文件或者文件夹隐藏起来。 今天推荐的这两款软件是两年前我就推荐过的&#xff0c;今天再找出来的时候…

作者头像 李华
网站建设 2026/4/16 5:59:32

【每日算法】LeetCode 79. 单词搜索

对前端开发者而言&#xff0c;学习算法绝非为了“炫技”。它是你从“页面构建者”迈向“复杂系统设计者”的关键阶梯。它将你的编码能力从“实现功能”提升到“设计优雅、高效解决方案”的层面。从现在开始&#xff0c;每天投入一小段时间&#xff0c;结合前端场景去理解和练习…

作者头像 李华
网站建设 2026/4/16 7:30:38

Calibre DESIGNrev 概述(1)

目录 Calibre DESIGNrev 概述 Calibre DESIGNrev 运行模式 Calibre DESIGNrev 工作流程 Calibre Interactive 与 Calibre RVE Calibre DESIGNrev 运行要求 运行模式 语法约定 Calibre DESIGNrev 概述 Calibre DESIGNrev 是一款专为简化数据查看与检查任务而设计的工具。…

作者头像 李华
网站建设 2026/4/16 7:47:09

Classpath 核心定义

一、Classpath 核心定义classpath&#xff08;类路径&#xff09;是 Java 运行时 / 编译时的核心环境变量&#xff0c;本质是一组目录 / 文件的路径集合&#xff0c;Java 虚拟机&#xff08;JVM&#xff09;、Java 编译器&#xff08;javac&#xff09;会通过它查找需要的类文件…

作者头像 李华
网站建设 2026/4/16 7:44:32

独立搭建UI自动化测试框架分享

今天给大家分享一个seleniumtestngmavenant的UI自动化&#xff0c;可以用于功能测试&#xff0c;也可按复杂的业务流程编写测试用例&#xff0c;今天此篇文章不过多讲解如何实现CI/CD&#xff0c;只讲解自己能独立搭建UI框架&#xff0c;如果有其他好的框架也可以联系我&#x…

作者头像 李华