【发布时间】:2014-08-04 18:31:56
【问题描述】:
我是 WPF 新手,我正在通过 MVVMLight 使用 MVVM,我有一个绑定到视图模型的 ObservableCollection 的数据网格,当我手动更新 modelView 时,视图会按预期更改, 问题是当我改变视图时,viewModel的值没有改变,
这是模型:
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
这是视图模型:
public class StudentViewModel : ViewModelBase
{
private Student _student;
public StudentViewModel(Student student)
{
_student = student;
}
public string FirstName
{
get { return _student.FirstName; }
set
{
if(_student.FirstName==value)return;
_student.FirstName = value;
RaisePropertyChanged("FirstName");
}
}
public string LastName
{
get { return _student.LastName; }
set
{
if(_student.LastName==value)return;
_student.LastName = value;
RaisePropertyChanged("LastName");
}
}
}
这是 Test.xaml:
<DataGrid Name="DgrdColumns" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="FirstName">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding FirstName, Mode=TwoWay}"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="LastName" Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding LastName, Mode=TwoWay}"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是绑定数据代码:
void BindData()
{
var students = new List<Student>()
{
new Student()
{
FirstName = "aa",
LastName = "AA"
},
new Student()
{
FirstName = "bb",
LastName = "BB"
}
};
var viewModels=new ObservableCollection<StudentViewModel>(students.Select(x=>new StudentViewModel(x)));
DgrdColumns.ItemsSource = viewModels;
}
【问题讨论】:
-
"that when I change view" 是什么意思?
-
表示我在窗口中编辑学生