What to use in UWP, Binding
or x:Bind
and what is the difference between them?
Because I see a lot of posts where people use Binding
and I only Bind with x:Bind
in UWP.
At the MSDN Homepage it only says that "the binding objects created by {x:Bind}
and {Binding}
are largely functionally equivalent." and that x:Bind
is faster.
But what is the difference between them?
Because "largely functionally equivalent" does not mean equivalent.
The Link from my Quote: MSDN
So my Question is:
What is the difference in using Binding or x:Bind in UWP?
The {x:Bind} markup extension—new for Windows 10—is an alternative to {Binding}. {x:Bind} runs in less time and less memory than {Binding} and supports better debugging.
x:Bind for WPF in . NET Framework and . NET Core is still not supported.
The following is probably not complete, but some of the major differences are
Old style {Binding }
New style {x:Bind }
And starting with build 14393, {x:Bind }
supports:
The newer {x:Bind } is a little faster at runtime but just as important it will give compiler errors for erroneous bindings. With {Binding } you would just see an empty Control in most cases.
For in-depth comparison checkout: {x:Bind} and {Binding} feature comparison
{x:Bind}
executes special-purpose code, which it generates at compile-time. {Binding}
uses general-purpose runtime object inspection. Consequently, {x:Bind}
has great performance and provides compile-time validation of your binding expressions. It supports debugging by enabling you to set breakpoints in the code files that are generated as the partial class for your page.
Because {x:Bind}
uses generated code to achieve its benefits, it requires type information at compile time. This means that you cannot bind to properties where you do not know the type ahead of time. Because of this, you cannot use {x:Bind}
with the DataContext property which is of type Object, and is also subject to change at run time. The {x:Bind}
markup extension—new for Windows 10—is an alternative to {Binding}
. {x:Bind}
lacks some of the features of {Binding}
, but it runs in less time and less memory than {Binding}
and supports better debugging.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With