Other answers are right, but adding some background (and a little unapologetic color).
WPF is almost entirely written in managed code; the binding system makes heavy use of .NET reflection which, while slower than direct code, isn't nearly as bad as some people make it out to be when used smartly. WPF was running on 2006 hardware, after all, and doing so quite well.
Enter the debacle of Windows 8, Windows RT, and Metro, when it was time to build a new XAML based UI framework. For reasons which MS now no doubt regrets but for which we're all still suffering, that framework was required to run on 2014 ARM hardware, i.e., the Surface RT. Apparently having too much of the framework implemented in managed code was deemed (rightly or not, I don't know) not to be viable given the minimum hardware requirements.
Thus, rather than start from the WPF codebase and modernize it, they forked the Silverlight codebase, which was already mostly C++ since it was a browser extension. For cross-language support, they invented IInspectable which is the foundation of what's now known as WinRT, and created a mostly incomprehensible - and by all accounts highly inefficient - system for "projecting" native classes to .NET and other languages. (You know, because vanilla COM on the C++ side and code generators for the C# interfaces and object wrappers would've been too easy).
Projecting native code to C# is one thing, but to support dynamic binding to view models and the like, native code needs to reflect and invoke managed objects/code, which is a lot more complicated. Consequently, dependency property and data binding performance in Metro/UWP/WinUI is terrible compared to WPF.
So x:Bind is a workaround for bad architecture. It pushes as much of the heavy lifting for dynamic binding as possible back into managed code (where it belonged in the first place), generated at compile time, to reduce the amount of marshalling/reflection needed between the native and managed sides.
As a sidenote, this explains many of the other limitations and omissions from WinUI, such as no MultiBinding, no binding in style setters, no ancestor type RelativeSource binding, the essential absence of triggers, the absence of default BindingMode's for DependencyProperty's, and more. They really, really want you data binding as little as possible, because they broke its performance, all to support a product that led to a $1 billion write-off.