我是WPF的新手,但是我已经做了很长时间了。也许像我的类似问题已经在某个地方回答了,但我真的不知道要使用什么搜索词。
因此,在我的窗口上,我使用Oxyplot库中的图。它的物品源与ViewModel中的ObservableCollection<DataPoint>
绑定。
如果我希望此数据点列表在整个应用程序中可用?
我该怎么办?在这种情况下创建这样的类是有意义的:
public class Global
{
public ObservableCollection<DataPoint> DataPoints { get; set; } = new ObservableCollection<DataPoint>();
}
并在ViewModel中指向它:
using static MyProject.Global;
public class MainViewModel
{
public ObservableCollection<DataPoint> MyPoints { get => DataPoints; }
}
或者最好不要将此列表放入ViewModel并直接绑定到Global.datapoints?
?无论如何,这是创建项目范围静态类的好方法,还是以不同的方式共享对象?
感谢您的回答。
请记住,MVVM只是一个将数据表示与业务逻辑与视觉呈现分开的系统。其他组件如何访问数据不一定相关。
我会将收集放在VM上。然后在应用程序类中实例化VM并将其分配给该类上的静态成员属性。然后,您可以让其他代码部分通过应用程序类的静态访问VM上的属性。
作为一个,不需要ObservableCollection
来使绑定起作用。一个人可以使用通用列表并绑定到它(VM上的INotifyPropertyChanged
(。一个只需要在集合中添加或从集合中添加或删除的项目时才需要ObservableCollection
,并且需要它限制的内容来处理该特定事件。
我在我的博客上有这样一个示例:
XAML:ViewModel主页实例化和加载策略,以更容易绑定