如何在mvvm框架中更新运行时的gridview数据源绑定?

时间:2018-01-18 04:11:31

标签: c# winforms mvvm devexpress

我有使用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();
    }

1 个答案:

答案 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;显示值将更新。

相关问题