Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows Forms (WinForms) Model View ViewModel pattern (MVVM) to DataBind or not

First I'm not mad, because I use MVVM in WinForms-) I know about MVP (Model View Presenter) pattern and its variants. When I started this project I was going to learn WPF and use it, but I'm forced to rush program development, and have no time to learn WPF, so I have to write it in WinForms which I know well.

So in short I have a large data oriented smart client application, which is close to finish, I have all Models and ViewModels done (Infrastructure, Domain, Presentation done) UI is done too, now I only need to wire UI to ViewModels.

First I started wiring it using the standard winforms way (BindingSources, and simple databinding) but when I did 30-50% of binding I found out that my program works very slow, I have like 100-150 bound properties total so far, 30 of them are domain root entity (aggregate root) bindings to its EditForm. So databinding doesn't work well in this situation, lots of unnecessary updates, cascade updates of entire view when something small changes, unclear behavior, and other ugly stuff. It smells like very unreliable code, on which I have little control.

So I began to rewrite wiring as pure clean WinForms code (subscribing to PropertyChange and ListChanged events, and setting ViewModels property on my own from UI). Lot's of code to write but it works much faster, I have full control on this, and it feels much more reliable.

So what's your thoughts on this guys? Anyone had such experience? What's your verdict on "To DataBind or Not"?

like image 357
Alex Burtsev Avatar asked Oct 01 '10 17:10

Alex Burtsev


People also ask

Can we use MVVM in WinForms?

The DevExpress MVVM Framework allows you to utilize the Model-View-ViewModel design pattern in WinForms applications.

What is databinding Mvvm?

It is a library as part of the Android Jetpack that binds UI components to data sources in the XML layout and minimizes the required code for the application's logic.

What is Data Binding in WinForms?

Simple data binding is the type of binding typical for controls such as a TextBox control or Label control, which are controls that typically only display a single value. In fact, any property on a control can be bound to a field in a database. There's extensive support for this feature in Visual Studio.


1 Answers

You might want to take a look at Truss. It provides a WPF-style binding manager that works on POCOs. It makes using MVVM with Windows Forms much more effective.

like image 127
Reed Copsey Avatar answered Oct 13 '22 00:10

Reed Copsey