x:Bind and x:Phase are two new features in XAML for Windows 10. Although they are just two of the new features introduced in Windows 10, they both provide small ways to provide performance improvements in new Universal Windows Platform (UWP) 10 applications and existing Windows 8.x applications that migrate to Windows 10.


x:Bind is a new binding syntax within XAML that does nearly the exact same thing that the current Binding syntax does in Windows 8.1 but with two key differences: x:Bind provides compile-time syntax validation, and x:Bind provides better performance. These two differences are actually a product of the same change. Where Binding used reflection at runtime to handle binding, x:Bind is able to produce strongly typed code at compile-time to handle the bindings.

So why not ctrl + h and replace all of my Bindings to x:Bind? x:Bind does have some limitations and minor differences with Binding. One specific example is that it defaults to Mode=OneTime whereas Binding will default to Mode=OneWay. Another example is that that it requires defining the type of the variable using x:DataType which could cause some issues if you rely on dynamic typing or using a variable with the same name across two different classes within the same binding (i.e. Person.Name and Book.Name). I expect Microsoft to come out with more documentation on the differences after the Windows 10 release. Overall I would recommend using x:Bind when possible, but, as is with all updates, be sure to test any code that you are moving from Binding to x:Bind.


x:Phase is another subtle update that can make significant performance improvements in your application. x:Phase provides the ability to prioritize the rendering of XAML controls within a data template. A common scenario for this is when using a long list that has images and text, it would most likely make more sense to load the text first and then the image second. Not only would this make the page look better while scrolling but if a user scrolls quickly enough it could save having to render the images at all and improve the overall speed of the app.

There have been many XAML improvements for UWP applications in Windows 10 for both functionality and performance. x:Bind and x:Phase are two small updates that can make a significant impact on an application if used appropriately. I recommend looking over samples of x:Bind and x:Phase on GitHub here. There is also a presentation from Build 2015 that provides some additional examples of how performance has been improved for XAML in Windows 10.