The following is probably not complete, but some of the major differences are
Old style
{Binding }
- binds to the DataContext
- binds to a Property Name, flexible about the actual source type
New style
{x:Bind }
- binds to the Framework element (code-behind class)
- needs all types fixed at compile time
- defaults to the more frugal OneTime mode
And starting with build 14393, {x:Bind }
supports:
- direct BooleanToVisibility binding, without a ValueConverter
- expanded Function binding
- casting
- dictionary indexers
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