WPF - 如何在ViewModels之间共享集合的单个实例?

时间:2017-05-23 05:21:18

标签: c# wpf list mvvm global-variables

所以我有一个对象列表,让我们称之为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

请劝告。干杯。

1 个答案:

答案 0 :(得分:1)

将摄像机列表放在单独的基本视图模型中,并将其设置为窗口的datacontext。这将允许您使用相对源绑定从两个视图绑定到此数据:

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