I spent last week assisting with a Silverlight training. What a great experience! I’ve been writing WPF applications for some time now, but I don’t enter the browser-based world very often. I was there to focus on the developer side and to assist with student projects. It was a week well-spent.
Since I’m typically on the developer side, I’m not vey comfortable with Blend. I can see that XAML development/design is easier in Blend than in Visual Studio, but it’s so different. Blend is nothing like any developer tool I’ve used before. The UI controls don’t have any of the typical look-and-feel so it’s a real struggle at first.
On top of that, XAML itself is just so different from VB and C#. It’s a great benefit though. By learning XAML you can eliminate the need to write most of the code. Making a control become disabled based on another checkbox, binding data to business objects, even creating advanced effects like motion and highlighting can be achieved in a strictly declarative sense. Code ends up being used as glue like it’s supposed to be!
There are plenty of things that you can’t do in XAML, but some of those things can be achieved by using code shims called behaviors or converters (a few other things as well). You write these once, declare them for XAML consumption, then use them declaratively as needed.
Debugging can be a real problem though. Figuring out which parent element has an explicit size set when you are working for a dynamic layout, or figuring out where a resource went which was being picked up just fine a minute ago can be difficult. Crashes can even occur at runtime even though everything is well-formed. For example, if two timelines (animation definitions) that run at the same time make changes to the same property of an object, it will fail. This might not be obvious during design-time.
For all that though, it’s worth working through the pain. I went from being a fair WPF programmer to a pretty good one just from what I learned about Silverlight and Blend Of course I’m much better prepared for Silverlight development now too!
