Is WPF & SilverLight Design worth learning - wpf

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!

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...

Who does design and develop Style and Layout while developing silverlight application?

In your company, who does design and develop style, layout in xaml, Designers? or Developers?
Are there enough designers who are able to deal with xaml or blend?
Are they willing to touch Blend?
In my company, Developers do all those jobs except making images.
I am so confused nowadays if this is right direction.
Give me a advice.
I'm the developer and the designer too. I think developers love blend, because it is very simple, and it is easy to create attractive interfaces (the greatest programming/design IDE i've ever seen). But i never met a silverlight designer, who is not a developer too. I think it will be happens in the future, that completely separate design and coding, but not now. Maybe in a new programmer generation :). I think its very important for a silverlight/wpf designer, to know, how this new binding concept works. Programmers knows it already, so it is much easier to do coding and design for yourself, than ask a designer to learn blend and the silverlight/wpf things, because they think it's coding...but blend is simply clicking...but you must learn it, and you must understand xaml hierarchy and syntax and everything...
So i think they must go to a training class, with developers, and learn the new things together. Than they can separate things. Designers are much lazier than developers, but they need learn new things too.
I think i'm lucky, i love design & coding too.
A Coder's perspective:
Silverlight is certainly gaining momentum, but in the design industry it is a relative newcomer.
I personally know of only one UK company that actually uses specialist "XAML designers" side-by-side with their Silverlight coders (but the results there are not anything special). I'm sure there are more but it says something that I have not seen many.
At my current major client, there is a real need for GUI design work, but that will be done by traditional designers (e.g. in Photoshop) and although I am a hard-core coder by trade I will likely be the one that "Blends it". Luckily I really like working with Blend (and Sketchflow). I rate it highly for coders, as it does so much more than the VS 2010 editor, and I tend to do only XAML tweaks in VS 2010 (and all my code of course).
Designers are not lazier. They have a different skill set - one that I do not have myself and have come to admire. The really good ones can produce amazing results, but even the worst ones are much better at pure design than me. I do not expect non-coders to sit at a desk for 12 hours straight solving problems like we are prone to do (but non-coders usually have better social lives) :)

At what case will I need to use WPF?

I am developing a small desktop application in VB.NET. It has to be formal like a business application. Will I need to use WPF?
As I heard it's good for building a richer UI, and I would love to work with something new. But I also have the notion that it's mostly used for graphics rich applications - videos, animations, etc. I do not know much about the .NET technology as I am beginning to learn.
Can I have some guidance regarding this?
Now that I know WPF - and in particular, now that I understand binding, commands, and the MVVM pattern - I'm not going to use WinForms again. WinForms is fine if you're developing simple, static UIs that aren't ever going to change and if you don't care how they look on machines other than your development workstation. But once you start needing more, your UI code gets more and more complex and difficult to maintain.
WPF applications seem more complex at first, particularly if you think of WinForms as a hammer and your approach to learning WPF is to pound in nails with it. But once you understanding binding and templates, and adopt design patterns that take advantage of those technologies, the complexity melts away. There's bureaucracy - implementing INotifyPropertyChanged and dependency properties and RoutedCommands is pretty tedious, and it feels like there's maybe an abstraction layer missing - but if you look past the surface cruft, WPF applications are actually a lot simpler than WinForms applications. Binding a collection of objects to the ItemsSource of an ItemsControl and implementing a DataTemplate for those objects accomplishes in a very small amount of code and work what would be a considerable effort in WinForms.
You don't need to use it.
You can use it very well for non-graphical tasks
It will take a bit of a learning when you're used to WinForms.
My advice: most certainly give it a try. It may not be economical for your current (small) project but consider it an investment in your skills.
Small desktop apps, especially business-like ones with forms and text boxes and minimal froofiness, will be fine as Windows Forms. If you don't need the extra power WPF gives you, don't worry about it -- there's a bit of a learning curve anyway, so wait til you need to learn it or have time for a personal project where you can experiment with it.
I find it spectacular with even small business-like applications (and really nice for large-scale systems). Getting that 'professional' look is in my opinion a lot easier in WPF compared to Windows Forms. And not having to deal with 'event-soup' is a definite plus in my book. My ratio of errors has gone down considerably switching to WPF.
It takes some learning, sure (just un-learning Windows Forms takes time). It took me about half a year before I had the same skill level as I had with Windows Forms, but I'm still increasing in speed today (I've been using it since .NET 3.0 came out).
And I agree with Henk - certainly look into MVVM if you decide to give it a go - that's where WPF shines.

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