Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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# BindingSource作为BindingSource与BindingSource作为ViewModel_C#_Winforms_Inotifypropertychanged_Bindingsource - Fatal编程技术网

C# BindingSource作为BindingSource与BindingSource作为ViewModel

C# BindingSource作为BindingSource与BindingSource作为ViewModel,c#,winforms,inotifypropertychanged,bindingsource,C#,Winforms,Inotifypropertychanged,Bindingsource,我已经注意到在winforms中实现数据绑定的这两种方法。但是,我想知道哪种方法更可取(就总体性能而言,例如设计时间、效率?据我所知,这两种方法是: BindingSource作为BindingSource: this.textBox1.DataBindings.Add(新绑定(“Text”,this.myBindingSource,“Augend”,true)); 通过使用表单的属性窗口,可以在设计期间轻松实现,并让表单自动生成代码 使用INotifyPropertyChanged更新控件,

我已经注意到在winforms中实现数据绑定的这两种方法。但是,我想知道哪种方法更可取(就总体性能而言,例如设计时间、效率?据我所知,这两种方法是:

BindingSource作为BindingSource:

this.textBox1.DataBindings.Add(新绑定(“Text”,this.myBindingSource,“Augend”,true));

  • 通过使用表单的属性窗口,可以在设计期间轻松实现,并让表单自动生成代码

  • 使用
    INotifyPropertyChanged
    更新控件,只需调用
    OnPropertyChanged
    而不使用严格的
    PropertyName
    值(这似乎让我失望)

BindingSource作为视图模型:

this.textBox1.DataBindings.Add(新绑定(“Text”,this.myViewModel,“Augend”,true));

  • 在没有自动生成和ViewModel的
    ProeprtyName
    匹配的情况下,似乎需要进行更多的设置工作

  • 使用
    INotifyPropertyChanged
    更新控件,但是
    PropertyName
    应该与对象的
    属性相同(这在某种程度上给人一种肯定的感觉,而不是以前的那种)

我开始更倾向于使用BindingSource作为ViewModel,但我认为如果使用BindingSource作为BindingSource,应用程序的控件设计器会容易得多。我相信控件和绑定将是松散耦合的。他可以将控件更改为他想要的任何内容,并只使用其属性窗口绑定数据s而不是潜入代码并手动更改那里的设置

但是,我想知道哪一个更可取(就总体性能而言,例如设计时间、效率

很快,就没有人喜欢了

  • 性能上的差异(如果有的话)可以忽略不计。在数据绑定中涉及到很多反射,以便统计一些额外的委托调用(现在一般没有人这样做)
  • 设计时支持如何,取决于需求,不能用作“整体性能”因素。例如,许多业务应用程序更喜欢使用规则和属性(如数据注释)按代码自动生成运行时UI,因此根本不需要设计时支持。从另一方面来说,如果确实需要设计时支持,那么除了使用
    BindingSource
    或类似的中介之外,别无选择。
    BindingSource
    本身不过是一个数据源适配器,它绑定到类型(或小型数据模型)在设计时,并在运行时转换为真实的实例

BindingSource
是数据绑定的源,您的问题可能是“首选哪一种:使用或不使用BindingSource将数据绑定到视图模型?”既然您提到了它,我的
this.myBindingSource
从技术上讲是通过属性窗口绑定到ViewModel的。我想我最初的想法来自我展示的代码片段,其中的源代码是ViewModel或
BindingSource