Reasons for VS to use WPF:
- You better lead by example, if you want people to use WPF, you must use it in house, intresting that it was the 1st point.
- WPF strong patterns of separation of concerns between UI an logic.
- Maturity of WPF.
- Plenty of rich UIs that VS needs that is much more easy to accomplish with WPF rendering engines. I guess that 3d driven designers and VS features are around the corner.
- Drive WPF into the area of building really complicated composites UI, and mature WPF even more with features that VS needed.
VS uses WPF by using xaml as it’s declarative UI and uses extensive Data Binding scenarios for example native data models., lots of legacy support, new Text rendering.
VS changed itself to WPF in a staged approach, first defining the data models VS needs (managed and native), second they replaced the Shell of VS that made them clear a path for real interop between unmanaged parts of existing VS and the managed Shell. Replacing key pieces of functionality like Command Bar and Window Manager (it was possible to run the old code and new together and switch in and out).
Most important aspect is Testing of UI. The team has underestimated how must cost was to rewrite the VS testing and consolidating old tests frameworks to a unified one.
Challenges were the interop obviously, mixing WPF controls and Win32 & WinForms HWND based controls. Handlings messages between unmanaged and managed components with OS. Keeping old APIs working to not break old extensions, but also making new extensions taking advantage of WPF.
Another concern was to keep other teams at Microsoft working while doing the change.
Performance was a real concern, when you work on mixed technologies you often suffer from the worse of them and the interop between them.
Many WPF features were added in regard of Focus stealing controls (you gotta make sure the Copy&Paste works in VS, mmm disabling it would have prevented Copy&Paste inheritance though :)).
Another important aspect was WPF Text clarity, a new TextRending logic make a tremendous change to text clarity.
A bit rushed out section of this session was performance, a list of tools were in use to monitor Visual Studio careful, but no demos.
I need to investigate it on my own.
A part that I was missing in this session was a bit of a Prism flavor. How composite application was built, how communication is done between components and such concerns.