c# – BindingSource作为BindingSource,BindingSource作为ViewModel

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

BindingSource作为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));

>如果没有自动生成和ViewModel的ProeprtyName匹配,似乎更多的工作
>使用INotifyPropertyChanged更新控件但是PropertyName应该与对象的Property相同(它以某种方式给出了保证的感觉而不是前一个)

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

最佳答案

However, I would like to know which one of them is more preferred (In terms of overall performance e.g design time, efficiency?

很快,没有首选的.

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

点赞