我有使用gridview数据源的MainModelList对象的绑定列表,当我点击按钮barButtonItemValidate时,我已经更新了MainModel列表中的对象,但gridview数据源没有更新或刷新。 那么如何在运行时更新gridview数据源?
//View
_fluent = mvvmContext.OfType<MainViewModel>();
_fluent.SetBinding(gridControlView, g => g.DataSource, x => x.MainObjectList);
_fluent.BindCommand(barButtonItemValidate, x => x.Update());
//ViewModel
public MainModelList MainObjectList { get; set; }
public MainViewModel()
{
MainObjectList = new MainModelList();
}
答案 0 :(得分:0)
如果要替换整个列表。将MainObjectList属性设为虚拟,使其INotifyPropertyChanged
aware:
// ViewModel
public virtual MainModelList MainObjectList {
get;
protected set; // changing allowed from the ViewModel's side only
}
此更改允许通过绑定执行网格控件的数据源更新。
如果要从MainObjectList集合中更改单个对象,请确保这些更改在整个集合和/或特定集合中提供通知。项目级别
完成此任务的最简单方法是从BindingList派生您的集合,其中T实现INotifyPropertyChanged
接口:
public class MainObjectList : BindingList<MainObject> {
// ....
}
public class MainObject : INotifyPropertyChanged {
// ...
}
BindingList将跟踪包含对象并引发ListChanged
通知。这些通知将由gridView处理,因此,gridView&#39;显示值将更新。