如何在 PRISM 中每次导航时创建新视图?

2024-02-20

我在我的新项目中使用 WPF4 和 PRISM4。

有一个模块,其中有多个视图。 DI 是统一完成的。当我第一次从 ViewA 导航到 ViewB 时,将创建 ViewB 并调用其构造函数。但是,当我尝试第二次、第三次导航到 ViewB 时,不会创建 ViewB,但会重用现有实例。

我在用着IRegionManager.RequestNavigate出于我的导航目​​的。

我尝试过通过瞬态生命周期管理器 to 寄存器类型统一方法,但没有效果。

有没有办法配置棱镜和/或统一以在每次导航到它时创建一个新视图?

Thanks.


正确的方法是实施INavigationAware在您的视图或视图模型中(Prism 将首先检查视图,如果它没有实现INavigationAware它还会检查 ViewModel)。

您特别感兴趣的是IsNavigationTarget方法,它告诉 Prism 是否应重用当前视图实例,或者是否应创建另一个实例来满足导航请求。因此,要始终创建一个新视图,您需要执行以下操作:

public class MyViewModel : INavigationAware {
    bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
    {
        return false;
    }

    void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
    {
    }

    void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
    {
    }
}

所有这些都在 Prism 4 文档的第 8 章中有更详细的解释;他们还有其工作原理的图示 http://msdn.microsoft.com/en-us/library/gg430861%28v=pandp.40%29.aspx#TheRegionNavigationSequence,这非常好,因为它还可以让您确切地知道可以在哪里连接以及如何连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PRISM 中每次导航时创建新视图? 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • VBA 宏将返回连续的月末

    这是我在这个网站上的第一篇文章 我需要有关一些 VBA 代码的帮助 该代码会将 31 07 00 放入单元格 B2 中 然后将每个月末日期放入该列中 并停止在单元格 B126 中的 31 11 2010 即单元格 B2 31 07 00 B
  • 当我上传 .png 图标时,“Android Asset Studio”会添加额外的空间,但当它使用其内部剪贴画时则不会。为什么?

    我正在尝试为我正在处理的一些 Android 应用程序创建一些漂亮的图标 有人引导我使用 Android Asset Studio 这是一个不错的在线工具 它可以创建完整的图标包 准备部署到我的 可怕的 碎片化的 Android 项目 re
  • 从中间向外循环数组的算法?

    我正在研究一种分而治之的算法 事实上 这是一种对多个输入点进行曲线拟合的算法 对于 划分 部分 我需要计算每个点的误差项 如果误差超过给定阈值 我希望在该点分割曲线并分别处理输入的左右部分 一个简单的循环就可以解决问题 但从当前部分的中间开
  • Payara5 服务器将无法部署:未知协议 RFB

    在干净的 eclipse 环境中 payara5 将不会部署 我已经使用 java 1 8 下载了正确版本的服务器 只需将其添加到新服务器即可启动它 我无法摆脱这个错误 payara 登陆页面可以工作 但管理控制台超时 任何帮助表示赞赏 2
  • 如何将正在运行的应用程序扩展到PCR中?

    如何将正在运行的应用程序扩展到PCR中 以及哪种 PCR 可以用于此目的 我假设您指的是 PC 平台上的 TPM 版本 1 2 因此您对以下规范文档感兴趣 TPM 主要部分 2 TPM 结构 http www trustedcomputin
  • 使用 .NET 实时读取文件中的更改

    我有一个经常更新的 csv 文件 大约每分钟 20 到 30 次 我想将新添加的行写入文件后立即将其插入数据库 The 文件系统观察者 http msdn microsoft com en us library system io file
  • Mac“find”和Linux“find”之间的区别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我继承了一个脚本作为应用程序构建过程的一部分 当我在构建服务器 Ubuntu Precise 上运行它时 它运行良好 但是当我在我的 ma
  • 如何通过 RSA 生成唯一的公钥和私钥

    我正在构建一个自定义购物车 其中 CC 编号和到期日期将存储在数据库中直至处理 然后删除 我需要加密这些数据 显然 我想使用 RSACryptoServiceProvider 类 这是我创建密钥的代码 public static void
  • 用于转换许多元素的 dec2bin 函数的更快版本?

    我正在读取位图文件并进行转换each范围从 0 到 255 的 RGB 值的二进制 因此 240 x 320 位图将有 230400 个 RGB 值需要转换 原来的 dec2bin 函数太慢了 所以我编写了自己的函数 因为我知道我的值始终在
  • 没有名为 main 的模块,wkhtmltopdf 问题

    我是Python新手 但我发现的所有搜索结果对我来说都没用 C Users Aero gt pip install wkhtmltopdf Collecting wkhtmltopdf Using cached wkhtmltopdf 0
  • 如何将自定义 HTTP 标头注入 SuperAgent 发出的每个请求中?

    Clearly 超级特工 https visionmedia github io superagent 支持自定义 HTTP 标头 request post api pet send name Manny species cat set X
  • ScrollView 中的 Xamarin Center StackLayout

    我正在尝试水平居中StackLayout在一个ScrollView 但是 那StackLayout不是水平居中 它左对齐 我尝试将ScrollView但整个视图是不可滚动的 只有中心部分是可滚动的
  • Typescript用户定义的类型保护检查对象具有数组中的所有属性

    我正在尝试写一个用户定义的类型保护 https www typescriptlang org docs handbook advanced types html user defined type guards测试给定的值是否具有给定数组中
  • 我们可以在postman中读取excel中的数据进行js测试吗?

    我们可以在postman中读取excel中的数据进行js测试吗 或者 我们可以编写一个从 excel csv notepad 读取数据的 js 脚本吗 我写了一些 js 脚本来自动化我的 API 测试 我正在使用 Newman 从命令提示符
  • C# 文件处理:在可执行文件存在的目录中创建文件

    我正在创建一个独立的应用程序 该应用程序将分发给许多用户 现在 每个人都可以将可执行文件放置在其计算机上的不同位置 我希望在执行可执行文件的目录中创建一个新文件 因此 如果用户的可执行文件位于 C exefile 该文件是在那里创建的 但是
  • 如何更改 Fluent NHibernate 中小数的默认比例和精度?

    在我正在构建的应用程序中 我有许多具有特定精度和小数位数的小数字段 需要从数据库进行映射 我可以通过使用来实现这一点Precision and Scale 方法 public class ClassAMap ClassMap
  • Unity UI 中图像模糊或像素化

    我有一个 211x211 的图像 其设置如下 在我的统一用户界面中 它看起来模糊 像素化 我的统一图像宽度高度设置为 40x40 我做错了什么 即使我尝试过 2048x2048 图像 但仍然得到相同的模糊效果 图像不清楚 这是我的游戏视图
  • JSoup 不会获取所有项目?

    因此 我尝试使用 JSoup 解析一个简单的列表 不幸的是 程序仅返回列表中以 N 开头的条目之前的条目 我不知道为什么会这样 这是我的代码 public ArrayList
  • 在 Python 中动态参数化多个测试

    我正在尝试使用 Pytest 编写动态测试套件 其中测试数据保存在单独的文件中 例如YAML 文件或 csv 我想运行多个测试 所有这些测试都是从同一个文件进行参数化的 假设我有一个测试文件test foo py 看起来像这样 import
  • 如何在 PRISM 中每次导航时创建新视图?

    我在我的新项目中使用 WPF4 和 PRISM4 有一个模块 其中有多个视图 DI 是统一完成的 当我第一次从 ViewA 导航到 ViewB 时 将创建 ViewB 并调用其构造函数 但是 当我尝试第二次 第三次导航到 ViewB 时 不