我已经开始学习MVVM的一些基本应用程序,我刚刚遇到了下面的绑定问题。绑定MVVM文本框中的自定义对象
我有2个文本框在我的视图say- Student_name和Student_year。我有一个Student类,在我的viewmodel中使用它的属性实现。但是,实际的学生类在我的模型图层中。
<TextBox x:Name="StuName"
Text="{Binding Path=MyStudent.Name, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
<TextBox x:Name="StuYear"
Text="{Binding Path=MyStudent.Year, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
视图模型:
private Student _myStudent = new Student();
public Student MyStudent
{
get { return _myStudent ; }
set
{
if (value != _myStudent)
{
_myStudent = value;
OnPropertyChanged("MyStudent");
}
}
}
模型(研究生班):
public string Name
{
get { return _name; }
set
{
if (_name!= value)
{
_name= value;
OnPropertyChanged("Name");
}
}
}
我所看到的一切从VM绑定值来查看工作的罚款。但是,另一种方式是在这里表现得有点棘手..
Wheneven我在文本框中更改名称/年份,控件必须登陆Viewmodel的Set属性?相反,它马上转到Model的Set属性。
对于实例,当我修改txtbox'StuName'时,调用了Student类的SET方法。但不是ViewModel的SET方法(MyStudent对象)。
我不知道为什么这样做的行为。是因为我直接将Student.Name绑定到文本框?在Viewmodel类中处理此SET操作的替代方法是什么?
在此先感谢。 PS:我已经正确实现了INotifyPropertyChanged接口,其他绑定(原始数据类型的)在其他控件中工作正常。
感谢您的回应:) +1建议替代解决方法 – Bharathi 2015-02-12 10:18:16