Good approach to learning to use WPF design tools? - wpf

I want to learn WPF but from all the commentary I've been hearing the tooling in Visual Studios is weak and would require me writing XAML by hand which is inefficient. I've seen tools such as Expression Blend that are used to create XAML however given my complete lack of understanding of WPF I'd be hard-pressed to get enough "mileage" out of the trial to learn enough to decide if I want to buy the software. So my question is if I want to learn the tooling that Microsoft is providing for WPF as I learn WPF what approach would you suggest? As for tooling, is there an Express edition of Blend that I can use to learn before I upgrade to the professional license? Thanks!

Honestly,
I've felt that I've learned WPF the best by writing the XAML by hand. I've been using VS 2010 Beta 1 and the designer has gotten better (with intellisense and such) and it sounds like when Beta 2 comes out it will be better yet.
After you learn WPF and get comfortable with the basics and functionality, then using Blend for making things look "pretty" is useful.
I do not know how long the trial version of Blend 3 is, but before 3 came out, they kept giving out a version (June Preview, August Preview and the likes) that lasted 3 months before they expired.
Again, I didn't feel like Blend helped me learn WPF, it just helped make things more visually appealing (gradients and some animations). But to each his own.

This isn't exactly what you are looking for, but I found it helpful when playing around with XAML.
Kaxaml

You might want to look at learnvisualstudio.net. I think they have some videos on WPF.
I use this website to help me learn VS.net and some .net languages.

I really enjoyed this tutorial when I was first getting started. I think they do a good job orienting you with WPF and Blend.

Related

Are there any reasons to choose to start learning Winforms instead of WPF?

Taking into account that I'm not familar with both of these technologies what should I start to learn? It seems I should use WPF as it allows "much more"?
Should WPF be used instead of Winforms? Is WPF substituting Winforms?
Like everything else,..it depends. Are you a professional or hobbyist? If you're a hobbyist then learn both. Winforms first, then WPF/SL because,...well,...why not? It's good to have a solid background understanding.
If you're pro then don't waste your time with WinForms, the time you'll spend learning the intricacies and of everything will not likely translate to any real benefit for your career unless you enjoy working in customer support or on legacy systems. Some do but most probably don't.
The learning curve of WPF and Silverlight is a little steep at first but it's not as bad as some say and if you've done any decent amount HTML in the past and you're used to declarative UI, it's really quite straight forward. Much easier than CSS anyway!
It's also worth considering that given the current direction of MS platforms and WinDev at Redmond, some might argue that you should take a look at WinRT and 'Metro style' apps right now too. Google/Bing the Build 2011 sessions and start there.
Good luck with everything :-)
HTH
Depending on your background WinForms could be easier to get a hold of initially, generally WinForms is easier to pickup and learn compared to having to learn WCF. There is a lot of legacy WinForms applications still out there that will be around for a long time.
There's plenty of related questions on the bottom right of the page.
Here's one such https://stackoverflow.com/questions/2703681/winforms-vs-wpf.
With all that said, if you're starting fresh it might help to learn WPF straight away so you don't have to re-learn things later on. So it really depends where you want to focus your career for the next little while (you can always learn the other if you need to, many have done that).
WinForms are much older than WPF, they exist since Win95 if i can remember. WPF is released as a module of .NET 3.5, it allows you to do powerful animations, complex graphic effects and a lot of beautiful things and which make life a lot easier :).
In general, WPF is the future. SO it's up to you ;)
Take a look at some WPF tutorial websites, for example, like this one: http://www.wpftutorial.net/WPFIntroduction.html, and see if you feel like you are going to go with WPF.
Besides, if you are familiar with mark-up language, XAML shouldn't be too hard for you to learn. And then from there, you can try building some simple WPF applications, and probably you will start to love it once you feel the beauty of WPF.
As for Winform, it's kinda old .NET technology. Not that it's totally not worth using/learning it. There are still large numbers of .NET application out there using Winform as its UI. It's still a good way to get familiar with .NET controls and some basics. But for the long term, you probably should focus more on WPF.
I was not so lucky as you to pick between WinForms and WPF, so I learned WinForms five years back and WPF a year back.
I do not regret it because there are a couple of things that WPF cannot do and we have to fall back to WinForms. Other times, there are WinForms components that you end up using in your WPF application because it is something that is developed by someone else.
At the end of the day, I was really happy how I could appreciate the ease of communication between the view and the view-model because I knew how difficult and mixed up it was in WinForms. So my two cents worth of advice is, do learn WinForms because it helps you appreciate WPF.
WPF is designed to replace WinForms which became obsolete years back. However, as you can see, the older .NET 2.0 stack is still in use because of Windows XP and WPF is present from .NET framework 3.5. So, learn both but your focus should be WPF.
I created this around July this year using WPF: http://www.youtube.com/watch?v=Y4qfFrZGKlA
Winforms are easier to understand, in my opinion. WPF is more designer's stuff than programmers.
Anyway, WPF is more modern technology, more beautiful, and if it's what you're seeking, you may skip the winforms part.

Winforms perpective vs WPF. General question

I know such questions have been discussed here but have never seen them to be put it in this new light. We all know that WinForms isn't updated anymore by Microsoft. For client apps they are pushing WPF now. And people say WPF is harder to learn (I don't know, haven't tried really. And when I've tried I didn't much like it). But on the other hand, could that be it is just WinForms is perfect and there is nothing more to be done here?
WPF is in deed much harder to learn as WinForms. However it is really powerfull and gives you a lot of new possibilities. (I like the DataBinding-features and Templating really a lot).
WinForms on the other hand is very stable and is built on Win32. I'm sure it will be supported for a long time in future. But for me it's clear that microsoft will not extend the features if they have a new concept out there. Would you extend your old app, if you have a new one?
For me, I have switched already some years and I have never regreted the change. However, I have a lot of clienst with WinForms-apps, I built before and I don't have any hurry to update them to WPF. I never had a problem with WindForms, it is really a good and reliable product. As for your question: I think really WinForms is complete. It represents its time and has the features, this time had to offer. However, it's not perfect, no software can be perfect. Furthermore, I know also a lot of companies, developping new Apps with WinForms. MS will surely not letting die a technology for which so many apps exists. Look at XP, it will live longer than Vista.
Hard to learn is subjective.
I started learning winforms and WPF about the same time and I definitely feel more confident using WPF and feel I have picked it up quicker simply because I didn't have to "unlearn" winforms.
Sure, some WPF concepts are harder to understand at first but once they click into place you will start making progress and won't look back.
Saying that both technologies are great. Winforms Ace card is that it is mature, stable and easier to find help for.
Saying this, your question has a hint of "I'm not sure which one to choose so need someone to tell me" - The best advice is pick one and get on writing your application. Great applications can be written in both WPF and Winforms.
WPF is definitely better than WinForms, when you develop any LOB application its a high priority that how well you manage your code/project. When using WPF you have the power of following:
Separating your view from logic (the power of xaml, easier to read and design)
You can implement MVVM which gives you great control of your code. When working with multiple teams on a big project its a big plus.
On top of all that you can choose to use a framework like MVVM light, or use Prism 4.0 which not only helps implement MVVM but has other features too.
Another big advantage is, once you develop an application in WPF, you'll be able to develop in Silverlight with great ease. and with Silverlight 4 you have the capability of running your app out of browser without coding. Same app will run on desktop, cloud, web.
Finally I would say I wouldn't use WinForms because its 2011, WinForms is 90s...

What good resources are available for an experienced ASP.NET developer to learn Windows Forms/WPF programming?

I am a ten-year veteran of ASP.NET and C# development and I'm moving into a position where I will be doing much more Windows Forms and WPF development. I have minimal experience with these technologies.
Can you recommend any good books or resources that will help me ramp up on these technologies quickly? I'd like to find resources that skip over basic .NET programming topics and get right to the heart of good application architecture, design and implementation.
There are many resources on windowsclient.net. This is the official, Microsoft run Windows Forms and WPF site.
That being said, I'd recommend only trying to get a very basic idea of Windows Forms, and instead, focus on learning WPF. This will help for Silverlight development, as well. WPF is the newer technology, and really is a better path going forward for future proofing yourself. By learning it first, you won't have to unlearn many bad habits you'll pick up with Windows Forms development.
Take a look at MEF and Prism if you are looking for good WPF application design. As for books - I'd recommend Apress' Pro WPF in C# 2008 (Don't know when it will be updated for 4.0, but relative few new things to learn here (mostly a few new controls and improvements in existing controls/syntax).
I really liked this video by Jason Dolinger on the MVVM pattern for WPF. It is a really great into what you can do with WPF, how data binding works, and helps get you thinking in the right direction.
http://blog.lab49.com/archives/2650

Is WPF & SilverLight Design worth learning

For a developpeur who as to do a project with WPF or Silverlight (xaml code), is it trial to learn some design (basics) and to handle blend? Beacause in France there isn't much blend professional (compare to photoshop users) and the price/day of a blend designer is very high.
What I am sure is there i ain't no artist, but it could be interesting/fun to learn something that different then pure code. So my question is mainly for designer or developpers that had to learn some design, is it that hard for a custom design?
The principle of design are not difficult to learn but they're not always easy to put into practice and that's why it's considered an art rather than a skill. Certainly WPF/Silverlight is a designers dream as far as desktop UI is concerned since it's VERY flexible so you'll find few restrictions on what is possible when compared to other technologies. Blend works well with them too and it's not that tough to learn.
To start learning design as a developer, i'd suggest you take in as much material as possible and pratice,..a LOT. Read design blogs like the ones here and read plenty of books. Some good starter books are The Non Designers Design Book, The Design Of Everyday Things and Don't Make Me Think. I know they all really help when i started to look into UI and interaction design.
Hope that helps.
A great way to find your way in the design world is the Principles of Design Series on Microsoft Showcase. These videos explain things like Rythm and Unity.
There are a lot of other videos that should help to find your way around Expression Blend and Silverlight.
One thing that works for me all the time is to look what others do and use that for inspiration in you own design. Just google-image or bing-image for you are designing or see if it is in the Infragistics UX explorer.
I understand your question as I went through the same thing. I've done plenty of web sites over the years, but I never felt as though they had the "zing" a good graphic artist could provide. Because of this, I had concluded some time ago that to really take my skills to the next level I had to learn at least some graphic design, but I never did anything about it.
That changed when I started learning WPF. I quickly decided that I needed to learn some basics, especially when I started using Blend which was a whole new world after living in Visual Studio for so long.
To jump start my graphic artist education, I took an introductory course at our local community college. It was worth every penny: I was exposed to principles of design and some key software products like Adobe Photoshop and Illustrator. Understanding them made Blend finally "click" for me. The experience has proven invaluable to me as a WPF developer, and I would recommend it to anyone interested in UI work.
WPF Silverlight have a lot of power however even when mastered it takes a lot of time to design a simple form say using a tab control using lots of grids with rows and columns and stack panels than it would on a normal desktop. Also it can be quite sloppy looking back at the XAML code just from a design point of view unless your using lots of windows which i try to avoid, i would rather have a tab control with each tab acting a a window. Anyway from a design point of view it is much more time consuming than a desktop application. You will find a lot of developers will use it as they are not good in code behind. So it depends on the program you are writing. ?You can make your program look very good from default controls and the listview is always a great control. Many will disagree because they think they are great developers and most likely will talk the usual no one want's to hear!

Is WPF the future of user interface design? Should I learn it now?

There has been a lot of talk surrounding the likes of WPF. I am wondering if WPF will become a new standard for graphical interactive user interface design. Is this where we are headed in terms of windows interfaces? Will it really take off like everyone says it will?
See also
Learning Windows Forms vs. Windows Presentation Foundation
(Contains links to many other useful posts on WPF).
I think there are plenty of applications still done in Win32, MFC and of course, WinForms. I think it would be a wise choice to add WPF to your tool belt. Should you drop everything and learn it today? That's up to you. I am seeing more demand for WPF. It's not overwhelming, but neither was C#/WinForms in 2001.
So the long winded answer is that you just have to take the chance. No one knows if WPF apps will dominate the market. I'm leaning towards the possibility and I'm also thinking Silverlight may be a real player in web apps moving forward. Since there are transferrable skills between the two, I'm hedging my bet a little bit by continuing to learn WPF.
Please see also Is it better to use WPF over WinForms
Sorry it's not a concrete answer.
You're asking us to predict the future :)
I think a better way to approach this is to look at the other technology you could learn if you didn't learn WPF. I would weigh the various tradeoffs and pick the one that was more valuable to me.
For instance if the choice was WinForms or WPF I would certainly go with WPF. WPF has a steeper learning curve than WinForms. However once you get past that learning curvie it is so much easier to work with. WPF can do in a few lines what took several hundred lines of a custom control in WinForms.
WPF is an ultimate graphic platform for Windows. Win32's GDI was a "first try", WPF is a "permanent structure". For the combination of Windows and flat displays (f.e. 3d displays might require something else), it will never be replaced. So learn it, it is a good commodity.
There is hell lot to learn in WPF. You need to die and reborn as a GUI programmer.
But is it worth the effort. Why?, Here is my answer.
Since you are asking this question, I assume you are Microsoft technologies based programmer.
As the direction of MS is towards WPF for GUI development, I see no choice. Win Forms will last long for probably 2 years more. Since the cool look and feel of WPF make users to ask for more and more WPF applications than Win Forms. As you know for many users GUI is the S/W :)
Now if you are non MS based programmer, probably from Java, I say WPF has lot of similarities with Java Swing. But it is a very-very big super set of Swing.
To have Swing catchup with WPF might take at least 2/3 years and by that time WPF might be ruling the word and I don't expect Swing to be much easier than this, if not difficult.
As silverlight is kind of platform independent and as it's model is similar to WPF, I predict WPF is going to rule at least for next 6/7 years if not a decade.
I believe and hope MS would make things much more easier for the programmers so that learning curve would be shortened or delegated to GUI artiists (using expression blend).
Hope I answered your question.
Microsoft has a habit of throwing everything in the wall and seeing what sticks... The Pocket PC platform, J#, and so on. With regards to WPF, it is too early to tell if adoption will increase in the future.
If you have programmed .NET Winforms and/or Webforms, the learning curve is not that steep. I would suggest dabble with it but don't throw all the eggs in the proverbial WPF (or even Silverlight) basket. As the others have noted, better to treat it as just another tool in your arsenal.
WPF has been around for a few years now and Microsoft's decision to rewrite Visual Studio (2010) in WPF is a good sign that it is here to stay. Remember, this is one of the most popular IDEs on the market and a sign of intent from the guys at Microsoft.
My organization adopted the technology last year and while it has a steep learning curve - you really have to learn to think in different terms - it has paid dividends in the richness of applications we are able to develop. I love winforms and am a big fan of asp.net but what blows me away about WPF is that you are provided with the building blocks and the possibilities are endlesss...
If I were you I would learn WPF for the experience and reap the rewards later. Don't forget - you'll also be learning the core of Silverlight if you adopt WPF - these are two technologies that in my humble opinion are going nowhere!
Using WPF is way better then WinForms and you need to have different mindset.
All I can say is Microsoft should have used HTML syntax when creating WPF and Silverlight applications so that front end coulde reused or at least for silverlight apps so that people that develope on Desktop could reuse the same code when writing browser apps that could be used anywhere.
If HTML5 becomes better I'm sure it will become popular as trend is toward open source (cheap technologies). No doubt WPF is far better for developing desktop apps then anything else I've used and c# is more powerfull as language (not speed) and how it's used.
Yes start learning it. It's applicable to Silverlight (though not a 1 to 1 mapping), it's also a very similar model to Abobe Flex's paradigm of MXML So you'll be getting 3 wins for the price of 1.
We're starting to see work come in that calls for it, so there's definitely a good reason to have it on the old utility belt.
I am begining to learn it Matthew MacDonald has writen a super book about it. I recommend that book to everyone (Infact I was surfing internet to learn WPF till I came across with his book and one more thing "stay away from Microsoft site (MSDN)"
Yes, if you will be designing desktop applications on the Windows platform, WPF is the emerging standard. WPF replaces the Win32 API that has dominated the Windows desktop until now, and Microsoft expects a similar lifetime for the WPF platform.
Besides, it's way cooler.
And then there is Silverlight, of course.

Resources