The official source of product insight from the Visual Studio Engineering Team
This is the final part in the WPF in Visual Studio 2010 series.
One of the aims of this series was to give a deeper look into collaboration the Visual Studio and WPF teams undertook during this release, specifically focusing on the “Lessons learned.” As such, I tended to focus on the issues we encountered and the solutions we came up with, rather than listing all the things that “just worked”. That may have left a negative impression with some readers, but the reality is that we were able to do things with WPF that would have been impractical with GDI and Win32. By impractical, I mean that it would have been possible, but would have taken so much time that we wouldn’t have been able to finish.
The move to WPF also gave us an opportunity to examine the architecture of Visual Studio and make changes that enforce a healthy separation between data and presentation. This is invisible to an end-user but, by reducing maintenance costs and improving ‘testability’ of components, it is immensely valuable to the development team and that investment will pay off in future versions too.
Visual Studio 2010’s use of WPF has enabled a number of interesting extensions, some of which have been mentioned on this blog and I’m sure there will be more to come.
In the end, I hope that this series was helpful and educational and helps ease any concerns about migrating to WPF. As always, please feel free to use the comment stream to post questions, comments or suggestions.
I’ll take a break from writing my own prose and let others do the talking. There are many, many online resources for WPF and I’m sure some of you have your own favorites. Here are mine.
If you’re looking for new features in version 4.0 here are a few nice summary articles:
Scott Guthrie’s blog : http://weblogs.asp.net/scottgu/archive/2009/10/26/wpf-4-vs-2010-and-net-4-0-series.aspx
Lester Lobo’s blog : http://blogs.msdn.com/llobo/archive/tags/New+WPF+4+features/default.aspx
You can also see video walkthroughs here and shorter ones here.
For general WPF training, there are some bite-sized, single-topic screencasts up on windowsclient.net, the official Microsoft site for WPF.
For more in-depth discussions and interviews with team members and enthusiasts, check out Channel 9’s WPF video library.
If you want to get started writing your own WPF extensions to Visual Studio 2010, check out these MSDN videos, samples and the Visual Studio Etensibility learning center. The Visual Studio 2010 SDK contains project templates for creating WPF Tool Windows and extending the new Editor in WPF.
I’d like to thank everyone who took the time to comment on earlier posts. Those comments helped shape this series and have inspired additional topics for inclusion in future Visual Studio articles.
Finally, let me thank those on the Visual Studio and WPF teams who helped put together this series, especially Matt Johnson and Phil Price for their excellent articles.
Previous posts in the series:
Paul Harrington – Principal Developer, Visual Studio Platform Team Biography: Paul has worked on every version of Visual Studio .Net to date. Prior to joining the Visual Studio team in 2000, Paul spent six years working on mapping and trip planning software for what is today known as Bing Maps. For Visual Studio 2010, Paul designed and helped write the code that enabled the Visual Studio Shell team to move from a native, Windows 32-based implementation to a modern, fully managed presentation layer based on the Windows Presentation Foundation (WPF). Paul holds a master’s degree from the University of Cambridge, England and lives with his wife and two cats in Seattle, Washington.
Thanks for these great series of WPF in VS!
I think WPF 4 will be a great platform, as well as VS2010. I just can't wait for both RTM versions.
I'm sure also that there are great lessons learned that will be manifested in the WPF vNext and VS vNext. I just hope that MS will continue developing WPF with focus on customers, whether as developers or as end users.
Thanks for taking the time to write this series. WPF is a fantastic technology.
I would have liked to see all the VS UI use WPF. I'm a bit disappointed that most of the tool windows are still Win32.
Please make VS look like Microsoft Expression Blend UI in the next release. Or better, integrate both products!
Paul, thank you very much for this series! It's been a great pleasure to read and get first hand information on problems you encountered and how you solved them.
I like to show one project that I make to Visual Studio Platform's Team.
This project generate something similiar a Dynamic Data, but Silverlight-based. This project generate user interface (grid and form window) and webservice to acess data.
What you think about?
I'd like to ask about how VS manage commands and their execution. Does it use WPF built-in command stuff, like ICommand, CommandManager, etc., or VS create a custom command manager and implementation?
That's a great question. No, Visual Studio doesn't use WPF's ICommand and CommandManager from System.Windows.Input. Instead, it has its own command system which predates WPF by many years. That command system is deeply rooted in Visual Studio's source code and it's also a rich point of extensibility for nearly every component, so we didn't want to make changes there. Even so, a lot of work was done in that area of the code to produce data models that were accessible to WPF's databinding mechanism. I hope to make that the topic of a future blog post.
Ah, I see, Paul. I have a feeling that MS is not using WPF built-in command stuffs.
I see that VS command system is so advanced in managing states of a task execution and state dependencies among command sources (sorry, I don't know the right words for those terms). I mean, for example, when I build a solution/project, I notice that the related build command sources (Build and Rebuild menu items/buttons/icons, etc.) are suddenly disabled (how can they be related?), but then VS window is still in interactive mode (a user can interact with it by clicking menu items, toolbar, etc; it seems the task execution is done in background mode, right?).
Actually, I'm kind of frustated when trying to achieve the same effect in my own application using WPF built-in command feature. Perhaps, it's just my limited knowledge, but I'm not really sure how it (VS style) would be done using WPF. Can WPF model be used to express such VS model?
Well, I hardly even remember if someone ever discussed about this VS command stuff and how it works. So, yes, I'd like to vote for a future blog post about this one.
And also, sorry for having a lot of questions here, Paul. It's just that I've been curious about this since few years ago. And now I have a feeling that I have to ask about it :D.