Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以MVC方式连接数据绑定、Linq、DataGridView?_C#_.net_Winforms_Linq_Datagridview - Fatal编程技术网

C# 如何以MVC方式连接数据绑定、Linq、DataGridView?

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("

我希望以MVC方式尽可能地分离表示逻辑和控件:

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;