c# - Prism 单实例 View 模型,由多个 View 使用

标签 c# wpf mvvm module prism

我有一个相对复杂的模块化应用程序,它似乎非常适合 Prism 库和 Shell/Module 架构。

我挂断了以下可能性:

我的应用程序将连接到许多物理设备,对于这个例子,我想通过 RS232 连接到激光。我只需要激光执行的少数几个方法,例如 Connect、GetHeight、SendCommand 和 Disconnect。所以所有这些都应该在激光类中定义。

现在,我需要一个 LaserModule 将具有多个分布在我的应用程序中的 View 。一个 View 可能会使用 GetHeight 不断轮询激光并显示值,另一个 View 可能是一个简单的按钮,它执行单个 GetHeight 并在对话框中显示结果。另一个 View 可能只是添加到 ListView 区域(以及其他模块 View )的另一个按钮,单击该按钮会转到 LaserModule 的设置 View 。

话虽如此,每个 LaserModule 只能有 1 个激光类实例,因为我只能连接到 RS232 端口一次。此外,我想所有的 View 都将共享相同的(单个实例)ViewModel,因为许多功能在不同的 View 之间共享。

这有什么意义吗?我会有很多区域,但是当我在这些区域中来回交换 View 时,我只想创建每个 View / View 模型的一个实例。

最后,应用程序应该能够为每个物理连接的激光器处理多个 LaserModule(但每个激光器都有自己单独的一组单实例 View / View 模型)。

非常感谢任何见解,这张图片大致总结了我正在尝试做的事情:Laser Views

最佳答案

您将拥有一个 Laser 服务,该服务将作为单例在容器中注册。然后您的 ViewModel 将使用该服务。不要尝试使用单例 ViewModel。那是自找麻烦。

关于c# - Prism 单实例 View 模型,由多个 View 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44049093/

相关文章:

c# - 绑定(bind)与 x :Bind: Why isn't the view updated when using Binding?

c# - 有没有人尝试过使用 Lyx 和 noweb 进行 C# 的文学编程

c# - 如何配置 IIS/Asp.Net 以使用客户端证书与服务器进行 TLS 连接

c# - .net 消息循环

c# - 使用 wpf 检测窗口上任何位置的文本框

c# - 如何使 WPF 程序匹配当前选择的 Windows 主题

wpf - 使用 MVVM 在 WPF 中绑定(bind)窗口的 "WindowState"属性

c# - WPF 命令 - View 与模型的关系

c# - 如何使用 jqGrid 和文本框进行搜索?

c# - Roslyn 中的 VisitClassDeclaration node.Identifier