As I started getting used to XAML, I kept thinking about how I’d implement custom controls everywhere and utilize the pattern in the same way I have before. Since the concept applies equally well to ASP.NET and WinForms, I of course assumed that I would want to apply it to XAML (either Silverlight or WPF) too. However, while actually doing my work in XAML, I restrained from creating custom controls right off the bat, instead waiting for the indication that I’d actually need them. I knew the time would come, but I wanted to wait until the last responsible moment to implement them, making sure that I was implementing them A) for the right reasons; and B) in the best manner.
Update… I have changed my mind on what you’re about to read. Be sure to see the follow-up article here.
Well, I’m about 2 months into working with XAML now, and I am yet to find a need for using custom controls everywhere. The stock controls are working quite nicely, and when they lack some sort of presentation or behavior that I want, styles, attached properties, and attached behaviors come to the rescue. With the combination of these 3 techniques, you can pull off some amazing things with stock controls. Attached properties and behaviors are just really, really cool. They are what ASP.NET and WinForms have been missing, and what I think is the key to being able to discontinue custom controls everywhere.
So I’ve now ridded myself of the instinct that a Silverlight developer would want to create custom controls everywhere when creating a Silverlight-based application. Just use the controls you have, apply styles, and attach properties and behaviors. And if you find a case where this falls short, let me know!
Update… I have changed my mind on this. Be sure to see the follow-up article here.