所以我有一个对象列表,让我们称之为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
请劝告。干杯。
答案 0 :(得分:1)
将摄像机列表放在单独的基本视图模型中,并将其设置为窗口的datacontext。这将允许您使用相对源绑定从两个视图绑定到此数据:
Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, Path=DataContext.CameraList}"