因此,我有一个对象列表,将其称为CameraList,还有一个名为StructureWindow的窗口,该窗口在TreeView中显示CameraList。然后,我有另一个称为ViewerWindow的窗口,该窗口在网格中显示CameraList。每个窗口都有其对应的ViewModel。两个ViewModel必须使用相同的CameraList实例。我该如何实现?在哪里创建CameraList实例?如何共享/从各种ViewModel访问它?

在此应用程序的WinForms版本中,我创建了一个包含静态属性的静态类,在其中实例化CameraList就是这样。我可以在整个应用程序中的任何位置访问它。

但是由于我试图使用MVVM模式迁移到WPF,所以我想知道在WPF和MVVM中执行此操作的最佳实践是什么?

Here's what I'm trying to achieve

请告知。干杯们。

最佳答案

将摄像机列表放在单独的基本 View 模型中,并将其设置为窗口的数据上下文。这将允许您使用相对源绑定(bind)从两个 View 将此数据绑定(bind):

Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, Path=DataContext.CameraList}"

关于c# - WPF-如何在ViewModels之间共享集合的单个实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44126354/

10-09 17:18