如何组合视图模型和静态对象



我是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主页实例化和加载策略,以更容易绑定

相关内容

  • 没有找到相关文章