C# 如何以MVC方式连接数据绑定、Linq、DataGridView?
我希望以MVC方式尽可能地分离表示逻辑和控件:C# 如何以MVC方式连接数据绑定、Linq、DataGridView?,c#,.net,winforms,linq,datagridview,C#,.net,Winforms,Linq,Datagridview,我希望以MVC方式尽可能地分离表示逻辑和控件: class MyModel : INotifyPropertyChanged { private IEnumerable<Domain> _domains; public IEnumerable<Domain> Domains { get { return _domains; } set { _domains = value; SendPropertyChanged("
class MyModel : INotifyPropertyChanged {
private IEnumerable<Domain> _domains;
public IEnumerable<Domain> Domains {
get { return _domains; }
set { _domains = value; SendPropertyChanged("Domains");
}
}
class MyControl
{
// m_Grid's hooked up to m_BindingSource
private DataGridView m_Grid;
private BindingSource m_BindingSouce;
public void SetModel( MyModel model )
{
m_BindingSource.DataSource = model.Domains;
}
}
class Controller
{
private MyModel _model;
private void UpdateDomains()
{
// predicate is built on user inputs
_model.Domains = db.GetDomains( predicate );
}
}
// extra code to create Controller, MyModel, and MyControl.
有人能解释为什么需要这样做吗?数据绑定的主要好处之一是减轻程序员管理PropertyChanged事件的负担。具有讽刺意味的是,BindingSouce能够检测MyModel.Domains上的更改。我尝试在m_BindingSource.DataSourceChanged的处理程序中更新数据源。更改后,网格停止更新。查看是否有可观察的收集 或者BindingList有任何区别 顺便说一句,你打错了,忘了“r”:
private BindingSource m_BindingSouce;
我认为模型、视图和演示者是您真正想要的。BindingList没有帮助。将查看ObservableCollection
private BindingSource m_BindingSouce;