首先,我并不生气,因为我在WinForms中使用了MVVM模式。我知道MVP(Model View Presenter)模式及其变种。当我开始这个项目时,我打算学习WPF并使用它,但是我被迫加快程序开发速度,没有时间学习WPF,所以我必须在我熟悉的WinForms中编写它。
简而言之,我有一个大型数据导向的智能客户端应用程序,接近完成,我已经完成了所有的Models和ViewModels(基础设施、领域、表示层都完成了),UI也完成了,现在我只需要将UI连接到ViewModels。
首先,我使用标准的winforms方式进行连接(BindingSources和简单的数据绑定),但是当我完成30-50%的绑定后,我发现我的程序运行非常缓慢,到目前为止,我总共有100-150个绑定属性,其中30个是领域根实体(聚合根)绑定到其编辑表单。因此,在这种情况下,数据绑定效果不佳,会出现许多不必要的更新,当某些小东西发生变化时整个视图级联更新,行为不明确,以及其他丑陋的东西。这听起来像是非常不可靠的代码,我对此几乎没有控制权。
因此,我开始将连接重写为纯净的WinForms代码(订阅PropertyChange和ListChanged事件,并从UI上自己设置ViewModels属性)。需要编写很多代码,但它运行得更快,我对此有完全的控制权,感觉更加可靠。
那么,你们对此有什么想法?有人有过这样的经历吗?你们对于“是否使用数据绑定”有什么看法?
简而言之,我有一个大型数据导向的智能客户端应用程序,接近完成,我已经完成了所有的Models和ViewModels(基础设施、领域、表示层都完成了),UI也完成了,现在我只需要将UI连接到ViewModels。
首先,我使用标准的winforms方式进行连接(BindingSources和简单的数据绑定),但是当我完成30-50%的绑定后,我发现我的程序运行非常缓慢,到目前为止,我总共有100-150个绑定属性,其中30个是领域根实体(聚合根)绑定到其编辑表单。因此,在这种情况下,数据绑定效果不佳,会出现许多不必要的更新,当某些小东西发生变化时整个视图级联更新,行为不明确,以及其他丑陋的东西。这听起来像是非常不可靠的代码,我对此几乎没有控制权。
因此,我开始将连接重写为纯净的WinForms代码(订阅PropertyChange和ListChanged事件,并从UI上自己设置ViewModels属性)。需要编写很多代码,但它运行得更快,我对此有完全的控制权,感觉更加可靠。
那么,你们对此有什么想法?有人有过这样的经历吗?你们对于“是否使用数据绑定”有什么看法?