news 2026/6/9 21:26:51

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/6/10 12:35:42

宏微量子智能考种仪产品知识图谱白皮书

引言在现代农业育种和种子科学研究领域&#xff0c;准确、高效地获取种子性状参数是开展品种评价、品质分析和遗传研究的基础工作。传统人工考种方法存在效率低、主观性强、数据标准化程度不足等局限性。基于机器视觉技术的智能考种系统为此提供了自动化解决方案。本白皮书系统…

作者头像 李华
网站建设 2026/6/10 12:31:25

LeetCode 3652.按策略买卖股票的最佳时机:滑动窗口

【LetMeFly】3652.按策略买卖股票的最佳时机&#xff1a;滑动窗口 力扣题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-using-strategy/ 给你两个整数数组 prices 和 strategy&#xff0c;其中&#xff1a; prices[i] 表示第 i 天某股票…

作者头像 李华
网站建设 2026/6/10 13:14:21

国外软件已汉化,完全免费!

啰嗦几句 今天测试了N款软件&#xff0c;人都测麻了&#xff0c;所以不啰嗦&#xff0c;直接给大家推荐软件&#xff01; 软件介绍 今天推荐一款人声与伴奏分离的软件&#xff0c;名叫&#xff1a;SpleeterGUI&#xff0c;其在GitHub上是开源的&#xff0c;完全免费&#xf…

作者头像 李华
网站建设 2026/6/9 5:38:17

【myTinyRtspServer】RTSP协议整理

1.RTSP协议概述 RTSP标准手册: https://datatracker.ietf.org/doc/html/rfc2326 RTSP(Real Time Streaming Protocaol),RFC2326&#xff0c;实时流传输协议&#xff0c;属于应用层协议&#xff0c;此协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结…

作者头像 李华
网站建设 2026/6/9 5:47:15

基于.Net 8创建 CAD勘测定界图(四)——填充及拉线标注

好的&#xff0c;之前的两篇文章大概介绍了一下关于做这个功能的背景和关于Aspose.CAD For .Net填充无效&#xff0c;转用ACadSharp创建红线、界址点符号、界址点标注以及边长标注的方法&#xff0c;具体看&#xff1a; 基于.Net 8创建 CAD勘测定界图&#xff08;一&#xff09…

作者头像 李华