问题:使用mvvm模式设计,添加单挑信息之后,重新给viewmodel里面的数据赋值的时候(重新从数据库取一次数据集合),界面没有随之更新
代码:
1,使用MVVMLight写了DataGrid的绑定了员工数据集合
部分代码
(已经继承ViewModelBase)
private ObservableCollection<Employee> employeeModelList;
public ObservableCollection<Employee> EmployeeModelList
{
get { return employeeModelList; }
set
{
employeeModelList = value;
RaisePropertyChanged("EmployeeModelList");
}
}
public EmployeeBLL employeeBLL = new EmployeeBLL();//数据库Bll
public EmployeeManageViewModel()
{
MsgHelper.RefreshDataGridEvent += MsgHelper_RefreshDataGridEvent;//委托刷新
if (IsInDesignMode)
{
}
else
{
employeeModelList = employeeBLL.GetEmployees();//从数据库拿到list
}
}
private void MsgHelper_RefreshDataGridEvent()//委托事件再从数据库拿一次
{
employeeModelList = employeeBLL.GetEmployees();
}
2,在另外一个添加员工的窗口,向数据库添加一条新数据,并使用委托方法传到员工集合的ViewModel
部分代码
employeeBLL.InsertEmployee(employeeInfo.employeeModel);
MsgHelper.RefreshDataGrid();
3,委托传递类
部分代码
public delegate void RefreshDataGridHandle();
public static class MsgHelper
{
public static event RefreshDataGridHandle RefreshDataGridEvent;
public static void RefreshDataGrid()
{
RefreshDataGridEvent();
}
}
4,经过测试,我将代码加了一句
发现通过集合的Add的是可以更新的,如果是重新赋值一遍是不可以更新的。
private void MsgHelper_RefreshDataGridEvent()//委托事件再从数据库拿一次
{
employeeModelList.Add(new Employee{xxxxxxxxxxxxx});
employeeModelList = employeeBLL.GetEmployees();
}