Runar Ovesen Hjerpbakk

Science-based software development

XAML Tools in Visual Studio 2015

Blend is recreated in new glory together in Visual Studio 2015. As is the XAML language service. Fast and fluid is the mantra. Roslyn saves the world. Roslyn saves the world.

The XAML designer can now be disabled completely, though it is also more useful, so it’s a tradeoff.

Code Peek is present in the XAML editor as XAML Peek. You can quickly edit your C# while in your XAML editor, complete with Intellisense, refactorings and code actions! Awesome! Thanks Roslyn. Who needs a designer view? Who needs a designer view?

Regions are supported in the XAML editor. It’s maybe more useful there, but I doubt it. If you need regions, you are doing something wrong. Structure your code differently and remember Uncle Bob. Clean! Short! And in your face if it isn’t. Regions are the root of all evil. Regions are the root of all evil.

Right click on any XAML file and you can open it in Blend. Blend is recreated in Visual Studio, but with an additional designer friendly theme. Projects and source control integrations are shared between Blend and Visual Studio. Blend lives! Blend lives! And it's dark! And it's dark!

The visual debugger is a very welcome addition. A UI debugger is now a requirement for modern UI frameworks IMO. The Live Property Editor supports setting arbitrary properties on any visual element, even properties that doesn’t have a value set yet. Blue lines are the defaults, yellow are the margins. Blue lines are the defaults, yellow are the margins.

Killer feature: databinding debugging! In the Live Property Explorer you can search for DataContex and browse the current context. This makes it easy to check if the right context is set or find misspelled properties.

Also awesome is the timeline profiling tools which I covered yesterday in Debugging Performance Issues Using Visual Studio 2015 and XAML Performance: Techniques for Maximizing Universal Windows App Experiences Built with XAML.

XAML views can share the same code behind, making code sharing possible also outside MVVM. But you do use MVVM, right? InitializeComponent can now take a URI to a XAML file as an argument. Adaptive like HTML :) Adaptive like HTML :)