在使用MVVM-light并开始学习如何使用之前,我在MainWindow.xaml.cs
中定义了一个字段,用于保存在同一文件中使用的字符串列表。
// MainWindow.xaml.cs
public static List<string> FieldName = new List<string>();
现在我很困惑使用/编写字段并在MainViewModel.cs
中使用它来观察MVVM模式的最佳方法是什么?
方式1:在MainWindow.xaml.cs
中定义字段,并通过调用MainViewModel.cs
在MainWindow.FieldName
中使用该字段。
方式2:在MainViewModel.cs
中定义字段并简单地使用它。 如果可以,那么定义字段的最佳方法是什么?
感谢。
答案 0 :(得分:0)
在MainViewModel
中定义属性(不是字段)并使用它(例如将视图绑定到它)。
答案 1 :(得分:-2)
我也开始使用WPF,但首先,我听说在数据绑定中使用字段很糟糕(你将在WPF中使用很多)。你需要使用属性(最大的优点之一是使用INotifyPropertyChanged),但我听说将一个MainViewModel中的所有字段和datacontext合并在一起也是很好的做法:
public class MainViewModel
{
MyDataContext datacontext = new MyDataContext();
}
public class MyDataContext
{
public static List<string> FieldName = new List<string>();
}
(重要提示:这并没有将FieldName实现为属性,我没有实现它,因为你阅读下面的帖子,只是写了这个来演示如何将属性和对象封装到一个DataContext中)
这使您只能建立一个DataContext,同时仍允许您访问主要内容中的其他DataContext。另外,不要忘记使用DependencyProperty,或在类中使用字段实现INotifyPropertyChanged,以便在更改时收到通知。
以下是演示的简单属性实现:
private string _MyProperty;
public string MyProperty
{
get { return _MyProperty;}
set { _MyProperty = value;}
}
首先,您需要将该字段转换为属性,这里有一个帖子解释: How to create a property for a List<T>
如果您希望更改反映在您的界面上,请不要忘记实施INotifypropertychanged:Implementing INotifyPropertyChanged - does a better way exist?