I have been engineering software for about 4 years now. For the most part I
have used Windows Forms and ASP.NET (the latter being my focus hitherto).
Presently, I have a little sideline project, that may or may not be
remunerative. This 'sideline' will be a smart client. The principal requirements
for this project are two fold.
- A Microsoft Outlook type interface, with a grid control that has
grouping.
- A grid control that is similar to uTorrent, Free Download Manager or
FlashGet. This grid will have an array or progress bars.
Because this project, which I'll code name "Chronicle" is not commissioned,
its is best met with free tools. At present it is in three incarnations.
- Using free components from http://www.componentfactory.com/. I
have used just the free toolkit from here
- Using the exceptionally good components from Devexpress
- Using Windows Presentation Foundation
So far the need for the project to be free has ruled out Devexpress
components because they are
- Very expensive
- Add additional layers of complexity to the project. Just try to get you head
around the Xtragrid, their version of the data grid view. This is not a pleasant
experience, and comes at the expense of a few months to master.
The two left, are the Windows forms application with Krypton, or WPF.
I was asked this question by Sabot a while ago;
What drives change in your organisation? Technology or Business
requirement?
I have since struggled to answer it. Business requirement tells me the
winforms is the way to go, but WPF makes things so much easier. Trying to embed
controls like progress bars into data grid views requires some tricky code. The
winforms data grid view has a flickering problem,
basically I'm fighting the tools here.
To get a faithful Outlook UI in winforms, there is the Joe
Stegman sample titled Building Outlook UI
in 100 lines of code with Winforms (link to the video on channel 9). This is
probably the canonical example for doing this type of thing in winforms. Only
problem is these is no grouping in the datagrid, that has been heavily modified.
In WPF you just set a few properties to a Listview control.
To get a faithful Outlook UI in WPF, there is this
example. Both examples lack the WOW and exact finish that Devexpress or
Infragistics components have. But they teach you the principles, you can iron
out your business logic, then either be creative or purchase presentation layer
components.
In WPF you can add any control into any control, a huge obstacle to my
project in windows forms.
In WPF to enable spell checking you do this;
<TextBox SpellCheck.IsEnabled="True" />
In windows forms you either
go with
Netspell
(4 years old) or
this, which does
not work on my PC because I'm using office 12. More tweaks required there then.
What would you do? Which way would you go?