我做了一个简单的例子来更好地理解MVVM模式.以下是示例解决方案的链接,因为它很难解释整个问题:http: //www.2shared.com/file/jOOAnacd/MVVMTestMyCopy.html
有Employee模型(带Age属性)EmployeeViewModel,它包含Employee对象并Age在以下代码中更改其属性:
public int Age
{
get { return _employee.Age; }
set
{
if (value == _employee.Age)
return;
_employee.Age = value;
NotifyPropertyChanged("Age");
}
}
Run Code Online (Sandbox Code Playgroud)
EmployeeViewModel是从ViewModelBase具有标准INotifyPropertyCHanged代码的类继承的:
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用ICommand来改变员工的年龄:
public void Increase()
{
this.SelectedEmployee.Age++;
NotifyPropertyChanged("Age");
}
Run Code Online (Sandbox Code Playgroud)
属性已更改,但绑定的TextBLock不会更改其值.我查了一下,发现NotifyPropertyChanged被调用,但是PropertyChanged是null.我还确保PeopleViewModel我的应用程序中只有一个.那么,为什么是PropertyChanged就是null?
编辑:这是完整的代码ViewModelBase:
public class ViewModelBase
{
public String …Run Code Online (Sandbox Code Playgroud)