MVVMCross - 将相同的 ViewModel 绑定到 2 个不同的 View

2024-04-06

基本上我的场景如下:我有 1 个视图绑定到 ViewModel,并带有一个项目列表(项目的类是我的模型中的类)。每次从此“列表视图”中的列表中选择一个项目时,其字段都会在另一个“详细信息视图”中编辑。这与客户管理示例场景相同,其中从列表(在“列表视图”中)选择客户,并且可以在“详细信息视图”中更改客户的详细信息。在我的场景中添加的怪癖是,我希望对详细信息视图中的项目所做的更改反映回列表视图中。更改从详细信息视图保存在数据库中。

此外,根据详细信息视图中所做的更改,可以从第一个视图的列表中删除该项目。请注意,这并不是从数据库中删除记录,因为列表视图中的列表只是一个filteredDB 中的项目列表。我想出了两种可能的方法:

  1. 通过将 2 个视图绑定到同一个视图模型

EDIT: 我如何调用第二个视图?第二个视图实际上会使用共享 ViewModel 的同一个实例吗?

-或者- 2. 通过传递在列表视图中选择的项目引用到详细信息视图。因此在这种情况下,我维持1-View 到 1-ViewModel 映射.

我的问题是:

  • 我怎样才能实现场景1,
  • 在 2 中,是否Init()方法(与ShowViewModel()方法)支持通过以下方式传递参数 参考?

如果您可以在答案中包含代码片段/示例,我将不胜感激。

预先非常感谢,


将 2 个视图绑定到同一个视图模型

您可以自由设置ViewModel任何财产View如果您愿意,可以手动操作。简单设定ViewModel = foo;在致电之前base.OnCreate(), base.OnNavigatedTo() or base.ViewDidLoad()

2、Init()方法(与ShowViewModel()方法配合使用)是否支持按引用传递参数?

MvvmCross 不支持在 ViewModel 之间传递对象。在 Windows Phone 上,导航是通过 url 参数执行的。在 Android 上,导航是通过Intents - 这些底层机制根本不允许您传递实际的对象引用。


一般来说,我使用从数据存储到 ViewModel 的消息传递来处理这种情况

如果您可以在答案中包含代码片段/示例,我将不胜感激。

您可以看到我通常如何在 N=12 到 N=15 中执行此操作http://mvvmcross.wordpress.com/ http://mvvmcross.wordpress.com/

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

MVVMCross - 将相同的 ViewModel 绑定到 2 个不同的 View 的相关文章

  • 如何使用 LiveData 和 ViewModel 发布改进 API 调用请求方法

    我是 android 和 java 的初学者 我在使用mvvm架构登录时遇到问题 并在android studio中用JAVA语言进行改造 我的代码如下所示 我的代码如下所示 API接口 FormUrlEncoded POST login
  • 使用 MVVM 动态添加时给予 TabItem 焦点

    所有 我添加一个TabItem to a TabControl动态地使用 MVVM 新的TabItems加载良好 但我希望添加的选项卡自动获得焦点 也就是说 我添加了一个选项卡 但我不想必须单击该选项卡才能获得焦点 XAML 的TabCon
  • 为什么从 UI 中删除命令源后会调用 CanExecute?

    我试图理解为什么在已从 UI 中删除的命令源上调用 CanExecute 这是一个简化的程序来演示
  • 从 IValueConverter 获取对 ViewModel 的引用

    是否有一种干净的和 或可接受的标准方式从 IValueConverter 引用 ViewModel 或者这是否打破了 MVVM 模式 基本上 我想根据 ViewModel 的其他属性转换 UI 中的绑定数据 我想这与如何从 IValueCo
  • 将静态对象添加到资源字典中

    我有一个在多个视图中引用的类 但我希望它们之间只共享该类的一个实例 我已经像这样实现了我的课程 using System public class Singleton private static Singleton instance pr
  • Silverlight 与 MVVM 继承:ModelView 和与 Model 匹配的 View

    今天我有一个关于 Silverlight 4 RC MVVM 和继承概念的特殊问题 并正在寻找最佳实践解决方案 我认为我了解 MVVM 背后的基本思想和概念 我的Model对 一无所知视图模型 as the 视图模型本身并不知道View T
  • 如何使用 MvvmCross 创建 MasterDetailPage?

    我正在尝试使用 MvvmCross 开发 Xamarin Forms 应用程序 并且我想使用汉堡菜单 MasterDetailPage 但我不知道该怎么做 我尝试了不同的方法 搜索教程和示例 但没有成功 谁能帮我 正如你在这里看到的Mvvm
  • 在 Windows 应用商店应用程序中进行模拟

    我可能不是第一个出于测试目的而在 Windows 商店应用程序中处理模拟的人 我想测试我的 ViewModel 并使用一些模拟框架来模拟它们 当然 所有可用的 通用 框架都不能在 Windows 应用商店应用程序项目中使用 我有一个想法如何
  • 使用 MVVM 为 WPF 搭建脚手架?

    谁能告诉我是否可以 如果存在某些实用程序 创建考虑到 MVVM 和 WPF 的脚手架 我的想法是我似乎有很多数据访问表单 当然我想自定义它们 但最初我想要一种快速提供表单的方法 即放置在它们上面并绑定到 mvvm 的所有控件 也许我问得很多
  • 在 MVC 中重用 WPF ViewModel 是否可行?

    我们有一个用 WPF WCF 编写的富客户端应用程序 并打算在 ASP net 中创建一个配套网站 如果可能 使用 MVC 我被要求弄清楚我们当前的代码库中有多少是可以重用的 由一个单独的团队 而且我对 ASP net 几乎没有经验 我们将
  • 当用户控件可见时将焦点设置到它

    I am showing a MessageBox and want the user to be able to copy the contents of the message using CTRL C The problem is t
  • 错误:此 PlotModel 已被其他 PlotView 控件使用

    我有两个选项卡绑定到一个viewmodel其中包含一个PlotModel of oxyplot并查看通过选择的模型DataTemplate 当单击第一个选项卡时viewmodel已正确绑定 但当切换到标题中定义的上面第二个选项卡时 会抛出异
  • 创建新视图时如何初始化视图模型中的属性?

    我有一个应用程序 可以打开一个视图 允许您搜索数据 然而 为了进行搜索 用户必须选择他想要在什么类别下进行搜索 目前 我正在尝试弄清楚如何将所选类别从主视图模型 作为 int 传递到新搜索视图的视图模型 目前我正在尝试在主视图中使用类似的东
  • MVVM 中动态创建 MenuItem-Separator 的 WPF 光学样式

    我有一个MenuItem从动态创建其子菜单项ItemsSource 财产 对于分组 我在菜单中有分隔符 分隔符是由 ItemsSource 集合中的 ControlTemplate 为每个空条目创建的MenuItem ItemContain
  • 如何为多个 BO 属性定义 IDataErrorInfo 错误属性

    我开始通过 IDataErrorInfo 接口在我的 WPF 项目中实现验证 我的业务对象包含多个带有验证信息的属性 如何获取与该对象关联的所有错误消息的列表 我的想法是 这就是 Error 属性的用途 但我无法追踪任何使用它来报告多个属性
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 在 AngularJS 中设置应用程序范围的 HTTP 标头

    有没有办法设置 httpProvider标题之外angular module myApp config 登录用户后 我从服务器获取身份验证令牌 我需要将其作为 HTTP 标头添加到所有后续请求中 您可以使用角度的默认标题1 0 x http
  • 如何(完全)在列表框中实现就地编辑?

    我正在构建一个应用程序 其中ListBox正在显示Description其项目的属性 我想实现与您在 Windows 资源管理器中编辑文件名时发现的相同类型的就地编辑功能 但我发现这需要大量工作 到目前为止我所拥有的是ContextMenu
  • 如何更改 TextBox.Text 而不丢失 WPF 中的绑定?

    在 WPF 应用程序中 我正在创建一个设置窗口来自定义键盘快捷键 在文本框中 我处理 KeyDown 事件并将 Key 事件转换为人类可读的形式 以及我想要获取数据的形式 文本框声明如下

随机推荐

  • Webpack 图像文件夹

    我对 webpack 还很陌生 当我部署时我基本上得到了JS文件和一堆在同一文件夹中像这样乱码的图像 我愿意为此not即将发生 我想让图像文件保留它们的名称 因为在我的 javascript 中 我想动态加载图像文件以及资源文件中的其他内容
  • 在威特的最后...Javascript不会取代'\n'!

    我已经研究这个问题好几个小时了 但运气为零 不知道这怎么可能 我会尝试总结一下 我正在使用 TinyMCE 将新内容插入数据库 该内容在插入数据库后作为 AJAX 响应发送回 然后显示在页面上 替换一些旧内容 所有这些都与问题无关 据我所知
  • 如何在父 DIV 容器中移动 DIV 并调整其大小而不溢出?

    let isSelecting false let selectionStartX selectionStartY selectionEndX selectionEndY let selectionRectangle let dragged
  • iphone:(音频)发布消息以杀死 mediaserverd

    我正在使用以下方法播放几种声音 音频服务 https developer apple com library mac documentation AudioToolbox Reference SystemSoundServicesRefer
  • 如何在VB.net中读取PDF文件或在VB.net中将PDF转换为word文档

    我需要使用 VB net 编写的应用程序阅读 PDF 中的文本 目前最好的方法是什么 我也愿意先将 PDF 转换为 Word 文档 然后阅读 iTextPdf 看起来是一个很好的起点 开源和 C 所以任何示例都应该可以移植到 vb net
  • 如何以编程方式接收超过 10 条亚马逊 SQS 消息

    我们有 SQS 标准消息队列 并且它的增长速度非常快 大多数时候我们都会收到旧的通知 我们已将消息保留期配置为 2 天 有没有办法以编程方式接收超过 10 条消息 以下是我从亚马逊恢复 SQS 消息的代码 private IEnumerab
  • 反斜杠零分隔符 '\0'

    我见过 0 用作混合二进制文件 UTF8 字符串 二进制数据 中的分隔符 谁能解释一下什么 0 意味着或指向一个好的学习场所 这是空字符 更多信息请参见此维基百科article http en wikipedia org wiki Null
  • 重置页面上的所有复选框而不循环

    我想知道是否可以在不使用 jQuery 循环的情况下重置页面上的所有复选框 将它们标记为未选中 您可以使用单个选择器查找所有选中的复选框 并从中删除 checked 属性 jQuery 将通过循环在内部完成此操作 但您不必自己编写循环 ch
  • Javascript -Uncaught 承诺被拒绝,即使它已经被拒绝

    我正在运行这个 Parse com 云代码作业 它查询我的一个类并获取 url 然后我读取这些 url 它们是 xml 文件 然后从其中获取一些数据并将其保存以进行解析 从代码中可以看出 这是代码 完整代码在这里gist github co
  • 使用提交更新 docker 镜像并进行小的更改

    我想利用 Docker 镜像的缓存 分层来节省带宽 磁盘空间和时间 Let say 我安装了一个 Web 应用程序 docker 映像并将其部署到多个 docker 主机中 docker 镜像包含我的网络应用程序的源代码 我编写了代码 现在
  • 哈希表插入失败。负载系数太高。 - ASP.NET 4.0 MVC3

    我们有一个在 F5 负载平衡服务器上运行的 ASP NET 4 0 MVC3 应用程序 我们收到了下面的异常 我们不在 Web 应用程序中执行多线程 但不知道 F5 负载平衡服务器是否可以考虑到该等式中 我们看到早期版本的 NET 中发生异
  • 为什么 Java Map 对 get 和 remove 方法采用无类型参数?

    我在代码中遇到了一个错误 我使用了错误的密钥从 Java 映射中获取一些我认为是使用 Java 泛型强类型的内容 查看 Map Javadocs 时 许多方法 包括 get 和 remove 都采用对象作为参数 而不是类型 K 对于定义为
  • .net 消息循环

    谁能帮我解释一下如何与 WPF 中的消息循环交互 我知道如何开始使用 System Windows Threading Dispatcher Run 现在 我只需要一种调用它的方法 我有一个 while 循环 我想在消息循环中处理消息 wh
  • WordPress 5.2 YouTube 视频在帖子中自动嵌入功能不起作用

    在我的个人 WordPress 博客 5 2 中 视频自动嵌入功能不起作用 编辑器会显示一个微调框 非常简短 但随后它会在后端显示视频链接 并在前端以纯文本形式显示 URL 我尝试过在不同的浏览器中更改帖子 全部失败 我尝试了不同的视频 有
  • 声明和原型的区别

    C 中的声明和原型有什么区别 在哪些情况下它们被称为声明以及原型 TL DR 所有原型都是声明 但并非所有声明都是原型 宣言是标准中使用的通用术语 原型更具体 Quoting C11 第 6 7 章 声明指定一组标识符的解释和属性 并从 6
  • 在流操作中使用方法引用和函数对象之间的区别?

    使用 Java 8 流时 我经常发现需要重构多语句 lambda 表达式 我将用一个简单的例子来说明这一点 假设我已经开始编写这段代码 Stream of 1 3 map i gt if i 1 return I else if i 3 r
  • 奇怪的宏定义问题

    我想在编译时根据另一个宏的值定义一个宏 但是这段代码没有按预期执行 include
  • WPF 绑定到 Xml;如何提取选定的 XmlElement 并转换为对象

    我有一个绑定到 Xml 文件和 XmlDataProvider 的 WPF ComboBox
  • 使用 PIL 的 Image.fromarray 时出现 KeyError: ((1, 1, 1280), '|u1') - PIL

    我有这个代码 from PIL import Image import numpy as np img Image open img jpg Image fromarray np array np mean i axis 1 astype
  • MVVMCross - 将相同的 ViewModel 绑定到 2 个不同的 View

    基本上我的场景如下 我有 1 个视图绑定到 ViewModel 并带有一个项目列表 项目的类是我的模型中的类 每次从此 列表视图 中的列表中选择一个项目时 其字段都会在另一个 详细信息视图 中编辑 这与客户管理示例场景相同 其中从列表 在