news 2026/9/21 2:17: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/9/20 23:31:06

win10 - 删除非法命名的文件夹的方法

文章目录win10 - 删除非法命名的文件夹的方法概述笔记删除非法命名的文件夹微PE工具箱 - 不行蜂鸟PE - OK备注备注尝试搞出一个畸形目录出来用手工在资源管理器中建立畸形目录&#xff0c;是不行的。用命令行试试在msys2-mingw64中试试备注备注ENDwin10 - 删除非法命名的文件夹…

作者头像 李华
网站建设 2026/9/21 21:07:04

必看!2025年单北斗GNSS形变监测高口碑产品排行榜

在2025年&#xff0c;单北斗GNSS形变监测设备凭借其高精度、可靠性和多功能性&#xff0c;成为市场上不可或缺的监测工具。该设备广泛应用于桥梁、隧道及地质灾害领域&#xff0c;通过实时数据分析&#xff0c;实现对结构的动态监测和预警。在众多优秀产品中&#xff0c;单北斗…

作者头像 李华
网站建设 2026/9/21 15:01:59

【计网】网络分层模型和http协议

前言计算机网络是一个复杂的系统&#xff0c;采取分层的结构&#xff0c;可以将复杂系统分解为可管理的模块。每层模块专注解决特定问题&#xff0c;使其各司其职&#xff0c;便于管理维护。在网络分层模型中&#xff0c;每个分层都接收由它下一层所提供的特定服务&#xff0c;…

作者头像 李华
网站建设 2026/9/21 3:03:38

Kotaemon在华为云上的部署实践:全流程记录

Kotaemon在华为云上的部署实践&#xff1a;全流程记录 在企业智能客服、知识库问答系统日益普及的今天&#xff0c;一个真正“可用”的AI代理不仅要能回答问题&#xff0c;更要答得准、有依据、可维护。然而现实是&#xff0c;许多基于大模型的聊天机器人仍困于“幻觉频发”“…

作者头像 李华
网站建设 2026/9/21 22:01:25

校园便利平台|基于springboot + vue校园便利平台系统(源码+数据库+文档)

校园便利平台 目录 基于springboot vue校园便利平台系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue校园便利平台系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/9/20 12:31:38

38、Linux 脚本编程:bc 计算器、数组与特殊技巧

Linux 脚本编程:bc 计算器、数组与特殊技巧 1. bc - 任意精度计算器语言 在处理整数运算时,shell 能满足很多需求,但当需要进行高级数学运算或使用浮点数时,shell 就显得力不从心了。这时可以借助外部程序,比如 bc 。 bc 是许多 Linux 系统上都有的计算器程序,它能…

作者头像 李华