假设我有一个名为Customer的类(由Entity Framework自动生成)
CustomerID // Primary Key & Auto-increment
Name
Gender
City
现在在我的ViewModel中:
public Class myViewModel : INotifyPropertyChanged
{
public Customer CurrentCustomer
{
get
{
return MainViewModel.cCustomer;
}
set
{
myViewModel.cCustomer = value;
OnPropertyChanged("CurrentCustomer");
}
}
....
....
....
}
这是我的MainViewModel
public Class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
cCustomer = new Customer();
}
public static Customer cCustomer { get; set; }
public void SaveChanges()
{
//Here I want to check if all the fields of cCustomer are empty
//And depending on that I want to save the cCustomer.
}
....
....
....
}
我试图通过将它们与null进行比较来检查cCustomer的所有字段,但是我得到一个错误,指出对象引用没有设置为对象的实例。
简而言之,我想在保存客户时检查cCustomer是否为空。
答案 0 :(得分:1)
您的MainViewModel
类将cCustomer
属性声明为static,但您在类构造函数中设置该属性:
public Class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
cCustomer = new Customer();
}
public static Customer cCustomer { get; set; }
因此,当您尝试在这些行中静态访问cCustomer
属性时,可能无法填充它:
get
{
// Unless you've created an instance of a MainViewModel already,
// this property will be null
return MainViewModel.cCustomer;
}
set
{
myViewModel.cCustomer = value;
OnPropertyChanged("CurrentCustomer");
}
您真的希望cCustomer
属性是静态的吗?此外,在实例构造函数中的类上设置静态属性可能是一种不好的做法,应该避免使用。
答案 1 :(得分:0)
您的cCustomer
可能是null
(对于属性集没有验证) - 很容易检查:
if (cCustomer == null)
{
// No Customer record, so don't even think about checking properties on it.
// feel free to throw an exception if it's not valid to save without one...
}
答案 2 :(得分:0)
不要那样做......应该是数据模型的一部分。如果您的要求是不应该有null
个值,那么请在类属性级别执行此操作:
public string Text
{
get { return text; }
set { if (value != null) { text = value; NotifyPropertyChanged("Text"); } }
}