我有一个相对复杂的模块化应用程序,它似乎非常适合 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/