news 2026/9/1 16:07:20

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/8/31 6:05:48

人机协同时代:HR如何用数字化工具破解IT团队管理困局

在数字经济加速渗透的今天&#xff0c;IT 团队已成为企业核心生产力引擎 —— 无论是产品研发、系统运维还是技术创新&#xff0c;都直接决定企业的市场竞争力。但与此同时&#xff0c;IT 团队的管理难题也日益凸显&#xff1a;技术人才招聘 “僧多粥少” 且精准度不足、绩效评…

作者头像 李华
网站建设 2026/9/1 8:32:07

【每日算法】131. 分割回文串

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

作者头像 李华
网站建设 2026/9/1 10:53:01

JAVAweb学习笔记——JS

1、JS(1)核心语法&#xff08;a&#xff09;引入方法首先是内部脚本&#xff1a;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JS学习</title><script>// 弹窗alert("hello")…

作者头像 李华
网站建设 2026/9/1 17:58:58

这是谁家部将,都做到内置ECC了!

有没有试过&#xff0c;设备突然宕机&#xff0c;查了3天才发现是DDR比特翻转搞的鬼&#xff1b;PCB尺寸卡得死死的&#xff0c;多一颗芯片都没地放&#xff1b;BOM成本要求一降再降&#xff0c;外置ECC DDR芯片却成了“减不下去的负担”……但就在今年&#xff0c;全志科技最新…

作者头像 李华
网站建设 2026/9/1 3:12:41

Vscode 与 jetbrains

VS Code 和 JetBrains 系列 IDE&#xff08;如 IntelliJ IDEA、PyCharm、GoLand 等&#xff09;是当前开发者最常用的两类代码编辑工具&#xff0c;二者在定位、核心优势、适用场景上有明显区别&#xff0c;以下是详细对比分析&#xff1a;一、 核心定位与本质差异特性VS CodeJ…

作者头像 李华