When creating a new GUI, is WPF the preferred choice over Windows Forms? [closed]
Asked Answered
S

34

47

Most restrictions and tricks with windows forms are common to most programmers. But since .NET 3.0 there is also WPF available, the Windows Presentation Foundation. It is said that you can make "sexy applications" more easy with it and with .NET 3.5 SP1 it got a good speed boost on execution.

But on the other side a lot of things are working different with WPF. I will not say it is more difficult but you have to learn "everything" from scratch.

My question: Is it worth to spend this extra time when you have to create a new GUI and there is no time pressure for the project?

Sipple answered 11/9, 2008 at 23:33 Comment(5)
Is there a performance difference between WPF and Winforms?Tenancy
Yes there is tim, Winforms is way faster for almost anything.Nozicka
@Camilo: I think your comment is misleading. For most things Winforms is about 1.2x as fast as WPF. For a few things it is 2x as fast. On the other hand, for many things WPF is actually faster than Winforms, sometimes dramatically so (eg animations can easily be 10x as fast in WPF). But I don't know of anything for which Winforms is "way faster" than WPF.Impressment
@Ray Well that depends on your video card. Rendering vector images for common controls is always slower than throwing a bitmap at the screen. At least I've seen a significant decrease in performance in a few WPF apps on a VM (since the VM wasn't using the graphic card), but I may be just wrong too. The nice side of it is that WPF is better with the developer (once one learns it, which I'm at) because of the abstractions. Plus, CPU's are getting faster every day (or at least for multi-threaded code).Nozicka
Any component suite (f.e. DevExpress) is way faster in its WinForms incarnation than WPF one. Including redrawing, responsiveness and memory requirements.Olin
P
72

WPF enables you to do some amazing things, and I LOVE it... but I always feel obligated to qualify my recommendations, whenever developers ask me whether I think they should be moving to the new technology.

Are your developers willing (preferrably, EAGER) to spend the time it takes to learn to use WPF effectively? I never would have thought to say this about MFC, or Windows Forms, or even unmanaged DirectX, but you probably do NOT want a team trying to "pick up" WPF over the course of a normal dev. cycle for a shipping product!

Do at least one or two of your developers have some design sensibilities, and do individuals with final design authority have a decent understanding of development issues, so you can leverage WPF capabilities to create something which is actually BETTER, instead of just more "colorful", featuring gratuitous animation?

Does some percentage of your target customer base run on integrated graphics chip sets that might not support the features you were planning -- or are they still running Windows 2000, which would eliminate them as customers altogether? Some people would also ask whether your customers actually CARE about enhanced visuals but, having lived through internal company "Our business customers don't care about colors and pictures" debates in the early '90s, I know that well-designed solutions from your competitors will MAKE them care, and the real question is whether the conditions are right, to enable you to offer something that will make them care NOW.

Does the project involve grounds-up development, at least for the presentation layer, to avoid the additional complexity of trying to hook into incompatible legacy scaffolding (Interop with Win Forms is NOT seamless)?

Can your manager accept (or be distracted from noticing) a significant DROP in developer productivity for four to six months?

This last issue is due to what I like to think of as the "FizzBin" nature of WPF, with ten different ways to implement any task, and no apparent reason to prefer one approach to another, and little guidance available to help you make a choice. Not only will the shortcomings of whatever choice you make become clear only much later in the project, but you are virtually guaranteed to have every developer on your project adopting a different approach, resulting in a major maintenance headache. Most frustrating of all are the inconsistencies that constantly trip you up, as you try to learn the framework.

You can find more in-depth WPF-related information in an entry on my blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Pittance answered 16/9, 2008 at 18:22 Comment(2)
I love the fact that you pointed out the issues on integrated graphics chips. This has bitten us more than once. Pain, oh, the pain.Lethalethal
I also like that you pointed out what you call the "FizzBin" nature of WPF. There really are so many ways to do things that it is hard to know (especially when you are just starting out) what way is the best way. If I could give you two thumbs up, I would. Nice answer.Lethalethal
I
148

After three months of trying to hammer out a line-of-business (LOB) application on WPF, I reached a point of considering turning back to Windows Forms for my project, and in researching other people's opinions, came across this thread...

Yes, WPF is a brilliant technology and it has benefits that span far beyond mere eye-candy... the templating and binding capabilities are great examples. The whole object model offers more flexibility and broader possibilities. That doesn't, however, make it the defacto platform for future LOB applications.

The "problems" which WPF solves in terms of separating GUI from business logic aren't problems which can't be readily solved in Windows Forms by simply starting with the right architecture and mind-set. Even the object-path binding capabilities of WPF can be reproduced in Windows Forms with some very simple helper classes. The data template capabilities of WPF are very nice, but again they're nothing that you can't simulate in Windows Forms on those rare occasions when you absolutely don't know exactly what objects you're going to represent on any given part of the screen.

Where Windows Forms races ahead is in terms of maturity. You can't swing a dead cat on Google without hitting some blog where someone has solved a Windows Forms problem for you. WPF, on the other hand, has comparatively less learning resources available, fewer custom controls available, and hasn't had as many of its teething problems solved.

At the peak of making a WPF vs Windows Forms decision has got to be the maturity of the development environment. Windows Forms editors are slick, responsive and intuitive. Feedback about errors gets to you instantly, the solutions are usually obvious, and the compile->debug->edit cycle in Windows Forms is very quick.

WPF applications, on the other hand, have comparatively pathetic design time support, with the design view all-too ready to chicken out at the first encounter of an error, often requiring a project build after the fix before the designer is willing to kick in again. Drag'n'drop of components from the toolbox might as well not be supported, given the vast range of circumstances under which it either doesn't work at all, or yields completely unintuitive results. Despite the promise of the WpfToolkit, there still isn't a usable DataGrid for WPF that yields any kind of resonable performance or design time friendliness.

Debugging WPF applications is a bit like the old ASP.NET debugging paradigm... hit F5 -> wait -> launch -> error -> stop -> fix -> hit F5 -> wait -> launch -> error -> groan -> stop -> fix -> hit F5.... All XAML which your program is running is locked, and tracking down XAML specific problems is often tedious.

The bottom line, simply put, is that the development tools for Windows Forms are going to have you banging out front-ends in a fraction of the time of a WPF application... especially if you're creating master-detail grids or spreadsheet like interfaces, which most LOB have. With Windows Forms, you start with 90% of the work already done for you.

I'm a huge fan of the WPF architecture. I just wish the design-time tool-set didn't feel like a pre-alpha debug-build.


Edit: This answer was posted about .NET 3.5 + Visual Studio 2008, but .NET 4.0 with Visual Studio 2010 ships with a WPF data grid. While many improvements have been made to the new WPF development experience, my answer here remains unchanged, and I'd like to add the following suggestion:

If you're in a rush to do RAD development, go with Windows Forms. If you're looking to produce a well architected, maintainable, scalable, resource firendly, multi-user Line-Of-Business application, consider ASP.NET MVC + HTML 5 + jQuery... My projects with these technologies have resulted in better outcomes, sooner, for my customers. MVC offers all of the same templating that WPF does, and jQuery enables animations and complex interactions. More importantly, an ASP.NET MVC + jQuery solution doesn't require your end users to have modern desktops with decent graphics hardware.

Inefficacious answered 4/3, 2009 at 10:18 Comment(4)
+1 Couldn't agree more, it's always good to hear from someone who has actually tried technology in the real world and with real world pressures. WPF will probably be excellent in 5 years when the tools and developers have finally caught up. And WinForms will still be around even then.Typehigh
The DataGrid control supports column Virtualization in WPF 3.5 SP1. That should solve the performance problems with it.Iliac
Having done a lot of ASP3 and ASP.NET in the past, I welcome the ability to design my UI with XAML. I see the UI as I type the xaml (in my head) and for me it's a lot faster than the UI designers... however I'm a developer not a designer so that might explain it a bitAlvardo
Are you using Expression Blend or VS.NET? VS.NET has all the problems you mention, but Expression Blend is a fantastic tool for design and layout of WPF applcations. It at least as good for WPF development as VS.NET was for WinForms development: I'd say it is far better. Back in the early days of WPF the tools weren't that good, but Expression Blend 2 solved all the problems you mention. The XAML is fully editable at all times, and I have never encountered a crash or having it "chicken out" on an error. Master-Detail is practically built in with CollectionView and the "/" feature.Impressment
I
84

I'm seven months into using WPF on what has now become a core system for my customer, and I'd like to share some more thoughts with you about the experience of learning and using WPF as a line of business presentation platform.

In general, the comments I made above still hold... The design time support for WPF isn't here yet. If you're in a big rush to get a rich-client application out of the door, go with Windows Forms. Period. Microsoft aren't in any hurry to discontinue the GDI / Windows Forms platform, so you can count on good support for a fair time into the future.

WPF is not easy to master, but that shouldn't be where you leave your descision about whether or not to invest your time and energy into learning WPF. Despite its present lack of maturity, WPF is built around some useful, modern concepts.

In WPF, for example, your investment in well-written business objects with sound validating logic is a solid investment. Unlike Windows Forms, WPF's data binding is briming with features that allow interface controls to react to invalid user input without writing GUI code to detect those errors. This is valuable.

The styling and templating capabilities in WPF have proven to be valuable too. Despite the common misconception that the only use for styling and templating is to create on-screen eye-candy, the truth is that these features significantly simplify the coding of a user interface which gives rich feedback - like buttons that disable/enable themselves base on the state of the underlying business logic layer, or tooltips which intelligently find their text based on the state of the object under the cursor, etc.

These all add up to incredibly valuable features for "nothing fancy" business applications, simply because they make it easy to keep the interface congruent with the underlying data.

In a nutshell:

  • In Windows Forms you design your user interface, then write code to drive that user interface, which generally also includes code to drive your data objects.
  • In WPF you invest in the business layer that drives your data objects, then design an interface that listens to your data objects.

It's a seemingly subtle difference, but it makes a huge difference in your ability to re-use code... which begs the question: "Is the Windows Forms vs WPF question actually an investment decision?"

(This seems to have become my favourite thread.)

Inefficacious answered 6/7, 2009 at 14:2 Comment(1)
Its really an investment, when you do your first WPF-Application. I guess most of the first WPF-projects, done and estimated by former WinForms programmers will be late. In my opinion it's well worth to learn WPF, but the question is if your employer thinks the same way..Delwin
I
73

Are there any compelling reasons to use WPF

Absolutely! WPF is absolutely incredible! It will be a major benefit for practically any project because it has so many features and abilities that Windows Forms lacks.

For business applications the biggest wins will be:

  • The fantastic data binding and templating make the biggest difference. Once a decent data model is in place, it only takes a few clicks to create a data template and use Expression Blend to configure exactly how your object will look using drag-and-drop. And binding to things like color or shape is trivial.
  • Screen layout is incredibly flexible. Not only can everything in WPF smoothly adjust to container size and shape changes, but items can trivially be enlarged and rotated, and even extend outside their containing frame.
  • Ordinary objects can be presented any way you like, can easily have different presentations in different screens, can share presentation, and can adapt their presentation to changes in data values.
  • If you need to print, rendering to the printer is trivial. Properly configured, WPF makes Crystal Reports or SQL Server Reporting Services (SSRS) look like a child's toy.
  • Your user interface will look and feel much more dynamic, including nice features such as buttons that animate when you pass the mouse over them.

For utilities and games, other advantages come to the forefront:

  • You can easily add shapes, lines, and arbitrary drawings to your application without using an external editor. Every component of these can be data-bound and animated, or controlled by code. In Windows Forms you ususally just have to import a bitmap and use it as-is unless you want to go to a lot of work.,
  • Animations are cool! Users will be really impressed, as long as you don't overdo it. They can also help people see what is going on and reduce the need for hilighting. For example, when dragging an object you can animate the target to show what will happen if you drop it.
  • Colors, gradient fills, brushes, fancy fonts, rotation of any objects, tile brushes, etc. Anything you want graphically is yours for the asking.
  • Incredibly customizable. I needed to draw railroad tracks for one application, so I could drop a train on them. A couple of hours later I had railroad tracks I could draw anywhere on the screen using Bézier curves, and they would join and switch automatically.

The bottom line is that any significant-size GUI you could build in Windows Forms can be built in WPF in a third of the effort (or less) and look way, way better.

Does WPF require more resources (RAM in particular)

You do pay a price compared to Windows Forms, but it is a small one.

  • RAM can go up or down depending on your implementation. WPF stores its data more efficiently so individual objects are smaller, but there tend to be more objects in WPF than in Windows Forms so this balances out, and either one can come out ahead.
  • CPU will go up compared to Windows Forms. In my experience, the actual update of WPF objects onscreen takes about twice as much CPU as normal Windows Forms rendering. If your application spends most of its time updating the screen, WPF may not be for you. But in that case you're probably not using Windows Forms either: Most serious games are written directly to DirectX.
  • Disk usage will be slightly less for WPF because it takes so much less code than Windows Forms. The data will be the same size, of course.

One more note about CPU use: Animations and transforms (motion, translation, etc.) is actually more efficient on WPF than in Windows Forms because of its retained mode storage. It is the initial getting of the objects up there that is slower.

Maintenance overhead

WPF is a huge win over Windows Forms when it comes to maintenance. Since everything is done in 1/5 as much code as before, there is 1/5 as much to maintain. Plus all the boilerplate stuff is gone so you can focus on the code that actually does the work.

Benefits of XAML

XAML is the core of WPF. Although WPF can be used without XAML, XAML makes it incredibly easy to use. XAML has HTML's ability to easily specify a user interface, but its built-in tags are much more powerful, and you can easily define your own. (In fact, it is normal to do so).

Some specific advantages of XAML:

  • Your entire UI is defined in a text file that is easy to read and manipulate, both for users and tools
  • MarkupExtensions allow Bindings to be specified in a clear and simple way
  • Type converters allow properties with complex types to be easily specified. For example, you can say Brush="Green" or you can specify a radial gradient brush with three stops.
  • You can create your own elements
  • You can easily leverage WPF's powerful "attached properties"

Other insights

I dreamed of something like WPF for many years. Many people have implemented portions of this functionality, but to get it all in one place and at such a price ($0) is amazing.

WPF is a huge paradigm shift from Windows Forms and will take some getting used to, but the time spend learning it will pay itself back many-fold.

WPF still has a few warts even five years later, but its power will totally blow you away once you experience it. If someone tries to drag you back to Windows Forms, you'll only go kicking and screaming.

Tips: - Do get a copy of Expression Blend for development - Do edit XAML by hand occasionally - Don't give up when it seems strange at first

Impressment answered 7/11, 2009 at 17:23 Comment(2)
»including nice features such as buttons that animate when you pass the mouse over them« you mean like Windows does for any normal button already, too?Laurettelauri
@Johannes: No I don't. All Windows does is put a hilight on the button (and even this works only if it is a plain-vanilla button). WPF can do far, far more. For example, a button may have a door icon that hinges open when you hover over it, or an insertion pointer can appear elsewhere in the UI. This extra richness is very useful in a business application because it increases user productivity.Impressment
P
72

WPF enables you to do some amazing things, and I LOVE it... but I always feel obligated to qualify my recommendations, whenever developers ask me whether I think they should be moving to the new technology.

Are your developers willing (preferrably, EAGER) to spend the time it takes to learn to use WPF effectively? I never would have thought to say this about MFC, or Windows Forms, or even unmanaged DirectX, but you probably do NOT want a team trying to "pick up" WPF over the course of a normal dev. cycle for a shipping product!

Do at least one or two of your developers have some design sensibilities, and do individuals with final design authority have a decent understanding of development issues, so you can leverage WPF capabilities to create something which is actually BETTER, instead of just more "colorful", featuring gratuitous animation?

Does some percentage of your target customer base run on integrated graphics chip sets that might not support the features you were planning -- or are they still running Windows 2000, which would eliminate them as customers altogether? Some people would also ask whether your customers actually CARE about enhanced visuals but, having lived through internal company "Our business customers don't care about colors and pictures" debates in the early '90s, I know that well-designed solutions from your competitors will MAKE them care, and the real question is whether the conditions are right, to enable you to offer something that will make them care NOW.

Does the project involve grounds-up development, at least for the presentation layer, to avoid the additional complexity of trying to hook into incompatible legacy scaffolding (Interop with Win Forms is NOT seamless)?

Can your manager accept (or be distracted from noticing) a significant DROP in developer productivity for four to six months?

This last issue is due to what I like to think of as the "FizzBin" nature of WPF, with ten different ways to implement any task, and no apparent reason to prefer one approach to another, and little guidance available to help you make a choice. Not only will the shortcomings of whatever choice you make become clear only much later in the project, but you are virtually guaranteed to have every developer on your project adopting a different approach, resulting in a major maintenance headache. Most frustrating of all are the inconsistencies that constantly trip you up, as you try to learn the framework.

You can find more in-depth WPF-related information in an entry on my blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Pittance answered 16/9, 2008 at 18:22 Comment(2)
I love the fact that you pointed out the issues on integrated graphics chips. This has bitten us more than once. Pain, oh, the pain.Lethalethal
I also like that you pointed out what you call the "FizzBin" nature of WPF. There really are so many ways to do things that it is hard to know (especially when you are just starting out) what way is the best way. If I could give you two thumbs up, I would. Nice answer.Lethalethal
B
62

WPF requires either Windows Vista or Windows XP SP2, which is not an onerous requirement, but it is a relevant one. If you want to run on Windows 2000 (which some people still do), then WPF won't work for you.

WPF is also a newer technology and not as proven as Windows Forms so you might choose Windows Forms as a less risky option, particularly for larger applications.

That being said, yes WPF is the future. Visual Studio 2010 is being rewritten in WPF, which will probably be the largest WPF application to date and it will also be a real test for the technology.

Obviously, legacy Windows Forms applications would be another situation where it is the correct choice.

Beau answered 23/12, 2008 at 11:56 Comment(5)
do you have a link for that VS2010 info?Minnich
Just google for Visual Studio 2010 Wpf Some examples: demiliani.com/blog/archive/2008/10/28/6520.aspx ayende.com/Blog/archive/2008/10/27/visual-studio-2010.aspxSteric
then I think its best to wait until MS has done this, learned the lessons, fixed all the niggles and added all the extensions that they need to make it work well.Lyrate
If you look at the blog of Rico Mariani, you'll see they've already reported lots of bugs and leaks and performance issues to the WPF team. Having VS heavily use WPF is a great advancement for WPF, IMO.Cankerworm
BTW Windows 2000 just became unsupported (sounding the bell of obsolescence): support.microsoft.com/ph/1131Mack
C
50

As others have said, there are advantages and disadvantages either way you go here. The advantages of WPF, as others have said, include:

  • The ability to make very rich UIs relatively easily.
  • Easier animation and special effects
  • Inherent scalability (use the Windows Vista magnifier tool on a WPF application, and on a Windows Forms application: Note that in the WPF application, all the vector art scales beautifully)
  • (OPINION ALERT) I feel it's "easier" to do document-oriented systems in WPF

However, there are drawbacks to WPF, where Windows Forms comes out on top:

  • WPF's in-box control suite is far more limited than that of Windows Forms.
  • There's greater support in the third-party control space for Windows Forms. (That's changing, of course, but think about it: Windows Forms has been around since 2001; WPF just a few years. By advantage of time, Windows Forms has greater support in the community.)
  • Most developers already know Windows Forms; WPF provides a new learning curve

Finally, bear in mind that you can create great, attractive and engaging UIs in either tool, if you do the work (or use the right third-party tools). At the end of the day, neither is necessarily better in all circumstances. Use what feels right for the project.

Canonry answered 14/10, 2008 at 18:40 Comment(5)
Your statement that "WPF's in-box control suite is far more limited than WinForms" could be misunderstood. WPF's in-box control suite can do far more than WinForms because every control can be templated and is mulit-purpose. Almost everything in WinForms maps directly to simple WPF. HOWEVER in the original WPF release (NET Framework 3.0) there WERE three functions missing that WinForms had built in: DateTimePicker, NumericUpDown, DataGrid. All three are easy downloads, plus the latest WPF (3.5 SP1) has added a DataGrid to the package.Impressment
In addition there are a few features of individual WinForms controls not present, such as AutoComplete for TextBoxes. By this time (November 2009), easy solutions have been posted on blogs for all of these. So there is no longer any reason to select WinForms because WPF is missing any controls. And if WPF is missing a vendor-supplied control you need, you can still use WinForms integration for that control.Impressment
For me, the biggest advantages of WPF are its data binding, templating, and layout.Impressment
"think about it: WinForms has been around since 2001" : yes, but WinForms didn't evolve since .NET 2.0...Spondee
Understand when the answer was written ... Over a year ago, this was all true. Now, yes, I'd probably go with WPF in a heartbeat. :)Canonry
I
24

The programming model for WPF is more open and flexible than Windows Forms is, but like ASP.NET MVC, it requires a little more discipline in terms of correctly implementing Model-View-ViewModel patterns.

My first LOB application with WPF ended up as an utter failuire, because it was a resource hog which brought my end-user's very-low-end laptops grinding to a halt... and this was ultimately because I just lept in with WPF + LINQ to SQL and expected a good result... and this is where WPF diverges so strongly from Windows Forms... In Windows Forms, you can get away with that sort of thing. WPF is much heavier on resources than Windows Forms, and if you don't architect your application to be lean, you end up with a 800-pound gorilla.

Don't shy away from WPF... explore it. But be aware that the acceptable sins of Windows Forms coding won't produce good results in WPF. They're fundamentally different engines, which lend themselves to fundamentally different coding patterns.

Last Word: If you do go ahead with WPF, get well acquianted with data virtualization for use with lists and grids. What is a simple data-bound ListItem or GridCell ends up being a hefty logical + visual object-graph in WPF, and if you don't learn how to virtualize, you application won't perform well on large data sets.

Inefficacious answered 9/3, 2009 at 6:34 Comment(2)
Thanks for coming back, revisiting this and sharing your experience. I appreciate it.Selffulfillment
I made the exact same experience. Unfortunately I haven't yet found enough precise information on how to really implement such a LOB app with WPF.Phylys
B
18

There is a very steep learning curve to WPF, and I recommend you get the obvious books first (Adam Nathan, Sells/Griffiths, and Chris Anderson) and blogs (Josh Smith, etc.). Just be prepared for it, and make sure your project allows you the time to learn WPF.

In addition to learning the technology, spend some time learning the patterns used to construct WPF applications. Model View ViewModel (MVVM) seems to be the one that has gained a great deal of acceptance.

Personally, I think WPF is worth it but be forewarned. Also note that you effectively restrict your users to Windows XP SP2+ and Windows Vista. We've made that decision, but you may have some different requirements.

Bobbyebobbysocks answered 12/9, 2008 at 0:46 Comment(0)
H
18

Both of technologies have their pros and cons. In a large application with a "classic" UI I'd use Windows Forms. In an application which require a rich user interface (skinning, animations, changing user interface) I'd choose WPF. Please check the article WPF vs. Windows Forms comparing WPF and Windows Forms.

Hoick answered 23/12, 2008 at 12:9 Comment(1)
+1 for the link. Josh has a lot of real life experience with succsessfully developed WPF projects including NY Times Reader.Brew
R
15

Aside from the flexibility in UI design, there are some technical advantages to WPF:

1.) WPF doesn't rely on GDI objects. Well, I think it uses 2 GDI objects for the instance of the window itself, but that's practically nothing. I've been involved to a certain extent in a very large internal Windows Forms application. The people in our office sometimes run 3 or 4 instances of it simultaneously. The problem is that they frequently run into the 10,000 GDI object limit inherent to Windows 2000, XP and Vista. When that happens the entire OS becomes unresponsive and you'll start to see visual artifacts. The only way to clear it up is to close applications down.

2.) WPF utilizes the GPU. The ability for WPF to off-load some of the UI processing to the GPU is brilliant. I only expect this aspect of it to get better with time. As a former OpenGL programming hobbyist I can appreciate the power that comes from the GPU. I mean, my $100 video card has 112 cores running at 1.5 GHz each (and that's not top of the line by any means). That kind of parallel processing power can put any quad-core CPU to shame.

However, WPF is still pretty new. It won't run on Windows 2000. And in fact, a WPF application can be slow to start up after a fresh reboot. I talk about all of this on my blog: http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Reveal answered 19/5, 2009 at 22:37 Comment(4)
+1 for having the technical perspective to complement the design ones.Annihilator
Out of interest, does GDI+ have any bearing on these points at all?Mack
Hi Steve. Great points, although I bumped my head on the GPU thing, after discovering that many users of my app were running laptops with those Intel "fake" GPU chips, which hurts WPF perforance no end.Inefficacious
@JBR - I'm not sure about GDI+. @Inefficacious - I know what you mean, some of those integrated chips are horrible.Reveal
A
14

I think it is worth learning WPF. Once you are up to speed, design work on your forms is much easier IMHO. I wouldn't worry as much about the 'sexy' stuff. Most of this is just a fad. You can make 'normal' Winforms-style applications very quickly and easy in WPF.

The whole concept lends itself to easier design IMO.

Agreed answered 11/9, 2008 at 23:40 Comment(1)
I agree with Rich. The sexiness of WPF has been way over emphasized. I think that is a great technology that offers some very compelling arguments to use it ... for standard, run-of-the-mill business applications.Lethalethal
M
13

I don't agree with some of the answers here. WPF is really well suited for line of business (LOB) applications. (The frog design LOB client is the best example). And besides all the possibilities to have your UI be eye candy (which is not necessary in business applications), WPF offers a lot more for you.

The data binding and templating features are just superior to Windows Forms. It also offers a far better way for separating code and presentation. We've successfully used WPF for 2 LOB applications in teams with no more than 2-3 developers.

The biggest problem you will face is probably the steep learning curve of WPF (compared to Windows Forms) which will decrease development speed with developers not used to WPF.

Myxomycete answered 24/12, 2008 at 9:47 Comment(1)
I would have to agree... the learning curve is steep, but it sure pays off in the long run. I started with WPF and never looked back.Alvardo
M
11

We are currently rewriting our application in WPF from Windows Forms. Yes, there is a steep learning curve and you have to "re-learn" some things, but it is so worth it. And combined with WCF, we are finding we are writing less code, faster, and more robust than ever before.

Stick with it for a while, read Adam Nathan's book, and check out the ever growing library of third-party controls like those from Telerik and ComponentOne. One negative, in my view, is that the design tool, Expression Blend, is very awkward to use. The latest version is still in beta, but it just doesn't feel right to those of us who have used Visual Studio for years. Yes, it's mainly for designers, but some things you just can't do in Visual Studio.

Multitude answered 12/9, 2008 at 1:13 Comment(2)
Yes, "writing less code, faster, and more robust than ever" is a great way to describe the WPF experience. It is not really about eye candy at all. By the way, since this was written Expression Blend has been released, is already to version 3, and is very slick to use - better than any VS.NET designer ever made.Impressment
There is a new version of this book amazon.com/WPF-4-Unleashed-Adam-Nathan/dp/0672331195Polarize
M
9

Consider WPF if interface design is important to you, because WPF can deliver better UI experience. But Windows Forms has on its side the years of evolution, so it's proven to work and you can find many versed programmers for that platform.

Also portability may be an issue, WPF only works with Windows XP SP2 and up.

Also, WPF has a steep learning curve, meaning it's not easy to deliver a quality product without having specific WPF experience.

Malign answered 23/12, 2008 at 12:9 Comment(0)
H
8

Well, one answer is "when you have to support 1.1 or 2.0", since WPF is part of .NET 3.0. There are known OS limitations for WPF, and there is an obvious skills issue: if you have a team of developers that know winforms, then it may be easier to turn out robust code with winforms. However, if you are writing a lot of UI code it is probably worth beginning to pick up WPF at some point.

WPF also shares a lot in common with Silverlight, so it has transferable benefits.

Herniorrhaphy answered 23/12, 2008 at 12:24 Comment(0)
A
8

WPF comes with many advantages such as superb data binding features, separation of concerns, separation of design and logic etc...

As a developer I enjoy the ability to define my UI using XAML as opposed to being tied to the Windows Forms designer and I feel good knowing I can count on another designer to make my app look good.

Personally I don't care older versions of Windows are not supported, but one of the big problems with WPF is that is is not (currently/ever) supported by Mono (http://www.mono-project.com) so WPF apps will not run on Mac OS or Linux. (Altough Silverlight applications will).

If you have the time and resources to invest in learning WPF, do it! Even if you're going to be writing Silverlight applications to support multiple OS's.

If you need desktop applications to run on multiple OS's stick with SWF.

Alvardo answered 23/12, 2008 at 13:42 Comment(2)
"WPF comes with many advantages such as superb data binding features, separation of concerns, separation of design and logic etc..." Agreed. WPF offers much more than fancy looks. It offers better architectural options.Artemisa
This is the big divide for me. I'm upgrading to "2.0" of one of my applications and while all my initial experimentation with WPF has been wonderful, I do want the app to be cross platform, so I'm going to do 2.0 using Winforms to leverage Mono. That won't stop me from rewriting my other apps in WPFHeinrick
I
7

There are many differences. We loved WPF for:

  1. The declarative style of programming.
  2. Animations and state transitions
  3. Expression Blend is a great tool
  4. Good style support.

However, we stuck with Windows Forms because:

  1. The extra time it takes for a developer to learn WPF when they already know Windows Forms.
  2. WPF will not run on Windows 2000 or lower.
Invoke answered 14/10, 2008 at 17:43 Comment(5)
Is Windows 2000 so important?? I mean, how many people are stuck in that archeological OS?Nozicka
It is because Microsoft is sponsoring some special school version (Windows 2k) for old notebooks and PCs - I think the name of the project is FreshStart...Sielen
Yeah, at least WinXP... Win2000?! c'mon!Noisemaker
@cevik, Fresh Start seems to have died in 2009. microsoft.com/Education/Freshstart/FsSplash.aspxTurbary
@dangph, This is unfortunately true, I hope they will start it with XP maybe :)Sielen
E
6

The biggest consideration when deciding which one to use is to consider what .NET Framework your target audience have installed. I find that more people have the lower .NET Framework versions that only support Windows Forms, but that's just my personal experience.

Eryn answered 14/10, 2008 at 17:37 Comment(1)
In November 2009 between 20-50% of all computers altready have NET Framework 3.0 or above installed so they can already run WPF. For those who don't, you can include it on your CD or you have your application download the NET Framework Client Profile when it is installed. The Client Profile takes 2 minutes to download on a 256K DSL line, and you can save bandwidth by setting it to download from Microsoft's web site.Impressment
R
5

The advantages of WPF is that it is much easier to create nice looking GUI's with custom controls and animations. WPF also helps further serparate the presentation and logic layers. If you have designers, it allows you to farm of 95% of this work to non-coders and allows the coders to work on logic. The disadvantages are the software costs for Expressions Blend, and the lack of any of the Visual Studio code profiling tools working well as they tend to get caught up in the frameworks calls in trying to render XAML. I am sure there are others but these were the only two we really saw.

The main consideration is if you wish to require your customers to have to install .NET 3.0 or even better .NET 3.5 SP1. You will get some niegative feedback

Reubenreuchlin answered 14/10, 2008 at 17:41 Comment(4)
You can include the NET Framework on your CD, or you can set it up to do a 2 minute download from Microsoft's web site (assuming 256K DSL line). In either case, it can be installed as part of your application's installation. This also works with ClickOnce.Impressment
I have 2M DSL and the whole setup takes generally half an hour when it doesn't crashes on My (usually clean install) XP machines.Nozicka
My experience has been that installing Client Profile (3.5 SP1) on XP takes about 5 minutes including the download. So far it has always installed with no problem. Some ideas of what might be slowing you down: 1. You are installing the full framework instead of Client Profile, 2. Your ISP has poor bandwidth to Microsoft servers & no caching, 3. Your local machine is busy doing Windows Update or other software updates, 4. Your local bandwidth is saturated (such as by streaming audio/video).Impressment
Maybe I was not clear enough. Download Speed and not clicking buttons have only partial imact on deciding if you wish to require installing the framework. The biggest consideration is if any of your customers would be enterprise or education situations where the local user may NOT have the option to install it.Reubenreuchlin
B
5

WPF makes it much easier to hand off the forms design work to an actual designer, not a developer in designer's clothing. If that's something you'd like to do, WPF is your answer. If the classic Windows styled buttons are fine, then Windows Forms is probably the way to go.

(Multiple answers make the claim that you should use WPF if interface design is "important to you" but that's pretty vague. Interface design is always "important".)

Boo answered 23/12, 2008 at 12:27 Comment(2)
If classic windows styled buttons are fine, and you want to spend a lot more time writing and debugging plumbing, WinForms is probably the way to go. Once mastered, WPF is also much more efficient for development than WinForms because of it's rich data binding and data templates, command architecture, attached properties, etc. This is true even if you don't care about visual styling at all.Impressment
"a developer in designer's clothing" -- pocket protectors and a turtleneck?Annihilator
B
4

If you have an MSDN license, check out Expression tools. It's designed explicitly for WPF, exports directly to Visual Studio and it may help ease your transition.

Bamboo answered 12/9, 2008 at 1:9 Comment(0)
I
3

If you only care about supporting Windows and don't mind the time it takes to learn it, go with WPF. It's fast, flexible, easy to reskin, and has great tools to work with it.

Intake answered 11/9, 2008 at 23:35 Comment(0)
F
3

As a side bonus, Silverlight is based on WPF and starting with either lets you gain the know how for working with the other. If things continue to go web based, having prior knowledge (and a library of existing code) to transfer easily to the browser (or Windows Live Mesh) might help give your software an extra lease of life.

Facsimile answered 14/9, 2008 at 10:11 Comment(0)
T
3

If you decide to go with WPF, considering pros and cons already explained in the above answers, I highly recommend going through this dnrTV episode with Billy Hollis

Tanta answered 15/9, 2008 at 20:21 Comment(1)
I enjoyed especially the first 25 minutes or so of this video where Billy Hollis shows off some of the capability differences between WPF and WinForms.Impressment
R
3

In DotNetRocks episode 315, Brian Noyes discusses this extensively.

Rationality answered 3/2, 2009 at 16:56 Comment(0)
W
3

For the last 3 1/2 years I've been doing Windows Forms development (at two companies). Both applications were used extensively and ended up having GDI problems. Large Windows Forms applications will eventually run out of GDI resources - causing the end user to have to reboot.

Whitleywhitlock answered 19/11, 2009 at 14:54 Comment(0)
C
3

There is a known issue with text rendering in WPF. Many users report that the heavy use of anti-aliasing and pixel-blending used causes blurry text. This is a big deal breaker in some circumstances and, as far as I know, has been acknowledged by Microsoft at some level.

Certify answered 23/12, 2009 at 1:29 Comment(1)
This is fixed in .NET 4 -- see blogs.msdn.com/text/archive/2009/08/24/…Excusatory
L
2

Scott is complaining about Expression Blend and how it doesn't make sense to him as a developer. My first reaction to Expression Blend was like that. However, now I see it as an invaluable tool, but it really depends on what type of developer you are.

I am user interface developer that has had to perform the Integrator role, and I eventually found Expression Blend invaluable to create styles, and control templates in a WYSIWYG manner. I almost always have Expression Blend and Visual Studio up an running on the same project at the same time.

I also think that playing around in Expression Blend and taking a look at the XAML that gets spit out is an excellent way to learn the WPF API ... much like using the designer in Windows Forms and checking the C# code it spits out is helpful in learning how to use whatever you are designing there.

Expression Blend is helpful. Just give it a try, especially if you are working on the visuals for the application.

Lethalethal answered 2/10, 2008 at 17:33 Comment(0)
M
2

A quote from an earlier post from Mark:

  • In Windows Forms you design your user interface, then write code to drive that user interface, which generally also includes code to drive your data objects.
  • In WPF you invest in the business layer that drives your data objects, then design an interface that listens to your data objects.

I would argue that this is more of a design choice, rather than whether or not you are using Windows Forms or WPF. However, I can appreciate that certain technologies might be better suited for a particular approach.

Musclebound answered 25/11, 2009 at 22:34 Comment(0)
C
1

WPF's support for declarative UI through XAML, rich controls templating and styling and tools like Expression Blend, makes it a lot better for designers to work with developers on the same project. Plus, it gives the developers the flexibility of attached dependency properties and the extremely powerful databinding. In addition Silverlight supports a subset of XAML and the same control classes as WPF, so your application can be ported as RIA with minimal efforts.

I would choose WPF over Windows Forms any day. Even if the target machines only have .NET 2.0, if the user can install additional programs, the new .NET Framework Client profile makes it quite easy to deploy WPF applications.

The only reason I might decide to stick with Windows Forms is if the product will be deployed on machines that are locked down and have only .NET 2.0 or .NET 1.1.

Crowe answered 14/10, 2008 at 17:37 Comment(0)
B
1

Only if you don't have WPF expertise and you don't want to invest in it :)

Battle answered 10/6, 2010 at 9:32 Comment(3)
-1 for encouraging people to think not investing into WPF is actually a valid option.Hakeem
I think everyone is misinterpretting my answer, I said "You don't want to invest in WPF" that doesn't mean "Don't invest in WPF. Does that?Battle
I would leave it to SO users to decide.Battle
I
0

For conversion projects (from Visual Basic 6.0), it's hard to get a team to switch to WPF. Besides the learning curve, people are already used to the old interface. Windows Forms, although being phased out, will be around for a long time still.

Indamine answered 26/12, 2008 at 18:29 Comment(1)
Those teams are right to reject WPF. A VB6->WPF "conversion" would actually be a rewrite, and according to Microsoft "far more costly and difficult" than an automatic conversion. Reference here #895Woald
H
0

I'd use Winforms for quick proof of concept stuff, because, while it's terrible for real applications, it is very good for "Visual Basic 6.0" - style rapid prototyping.

So, here an example:

If I need to trace through multiple steps of a process (like downloading something, calculating / converting, creating intelligent ouput) and making everything reproducible, I usually make a quick Form, with a ListBox and a few buttons, done.

Since I'm a REAL developer, the logic will already be in classes other than the view anyway, so this is a fine place to start.

Hakeem answered 19/7, 2010 at 8:50 Comment(0)
B
0

Using WPF provides you with the means to customize your application to a great extent. You can code very quickly, that is, create a customize control like a textbox within seconds and customize various attributes like content style, etc., and the best part is the UI beauty, that is, animations, triggers, etc., graphics. But it requires good hardware specifications and some special features available only in Windows Vista and Windows 7.

Windows Forms does not have these rich features which really count, otherwise we can create any type of application using it which we can in WPF.

Windows Forms and WPF are a different species all together, it all depends on the project requirements, that is, what the client or user wants.

Bichromate answered 5/9, 2011 at 10:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.