BindingSource作为BindingSource,BindingSource作为ViewModel

时间:2015-12-14 04:28:59

标签: c# winforms inotifypropertychanged bindingsource

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

BindingSource as BindingSource:

this.textBox1.DataBindings.Add(new Binding("Text", this.myBindingSource, "Augend", true));

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

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

BindingSource作为ViewModel:

this.textBox1.DataBindings.Add(new Binding("Text", this.myViewModel, "Augend", true));

  • 在没有自动生成和ProeprtyName ViewModel匹配

  • 的情况下,设置似乎更有效
  • 使用INotifyPropertyChanged 更新控件PropertyName应与对象的Property相同(以某种方式给出感觉保证而不是前一个保险。

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

1 个答案:

答案 0 :(得分:1)

  

但是,我想知道哪一个更受欢迎(就整体性能而言,例如设计时间,效率?

很快,没有首选的。

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