如何结合 ViewModel 和静态对象
How to combine a ViewModel and static objects
我是 WPF 的新手,但我使用 C# 已经有一段时间了。也许像我这样的类似问题已经在某个地方得到了回答,但我真的不知道用什么搜索词来回答这个问题。
所以在我的 Window 上,我使用了 OxyPlot 库中的图表。它的 ItemsSource 绑定到 ViewModel 中的 ObservableCollection<DataPoint>
。
如果我想让这个 DataPoint 列表在整个应用程序中可用,我该怎么办?
在这种情况下创建这样的 class 是否有意义:
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?
无论如何创建项目范围的静态文件是否是一种好方法class或者是否以不同的方式在应用程序中共享对象?
感谢您的回答。
请记住,MVVM 只是一个将数据表示与业务逻辑与可视化表示分离的系统。其他组件如何访问数据不一定相关。
我会将集合放在 VM 上。然后在应用 class 中实例化 VM,并将其分配给 class 上的静态成员 属性。然后,您可以让其他部分代码通过应用 class 的静态访问 VM 上的 属性。
顺便说一句,不需要 ObservableCollection
来进行绑定。可以使用通用列表并绑定到它(在 VM 上使用 INotifyPropertyChanged
)。只需要 ObservableCollection
当要动态地从集合中添加或删除项目并且想要它绑定到什么来处理该特定事件时。
我的博客上有这样一个例子:
Xaml: ViewModel Main Page Instantiation and Loading Strategy for Easier Binding
我是 WPF 的新手,但我使用 C# 已经有一段时间了。也许像我这样的类似问题已经在某个地方得到了回答,但我真的不知道用什么搜索词来回答这个问题。
所以在我的 Window 上,我使用了 OxyPlot 库中的图表。它的 ItemsSource 绑定到 ViewModel 中的 ObservableCollection<DataPoint>
。
如果我想让这个 DataPoint 列表在整个应用程序中可用,我该怎么办?
在这种情况下创建这样的 class 是否有意义:
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?
无论如何创建项目范围的静态文件是否是一种好方法class或者是否以不同的方式在应用程序中共享对象?
感谢您的回答。
请记住,MVVM 只是一个将数据表示与业务逻辑与可视化表示分离的系统。其他组件如何访问数据不一定相关。
我会将集合放在 VM 上。然后在应用 class 中实例化 VM,并将其分配给 class 上的静态成员 属性。然后,您可以让其他部分代码通过应用 class 的静态访问 VM 上的 属性。
顺便说一句,不需要 ObservableCollection
来进行绑定。可以使用通用列表并绑定到它(在 VM 上使用 INotifyPropertyChanged
)。只需要 ObservableCollection
当要动态地从集合中添加或删除项目并且想要它绑定到什么来处理该特定事件时。
我的博客上有这样一个例子:
Xaml: ViewModel Main Page Instantiation and Loading Strategy for Easier Binding