Was in UWP zu verwenden ist, Binding
oder x:Bind
und was ist der Unterschied zwischen ihnen?
Weil ich viele Posts sehe, in denen Leute Binding
verwenden und ich nur Bind with x:Bind
in UWP.
Auf der MSDN-Homepage heißt es nur, dass "die Bindungsobjekte, die von {x:Bind}
und {Binding}
sind weitgehend funktional gleichwertig. "und dass x:Bind
ist schneller .
Aber was ist der Unterschied zwischen ihnen?
Denn "weitgehend funktional äquivalent" heißt nicht äquivalent.
Der Link aus meinem Zitat: MSDN
Meine Frage lautet also:
Was ist der Unterschied bei der Verwendung von Binding oder x: Bind in UWP?
Das Folgende ist wahrscheinlich nicht vollständig, aber einige der Hauptunterschiede sind
Alter Stil {Binding }
{x:Bind }
Und beginnend mit Build 1439 , {x:Bind }
unterstützt:
Das neuere {x: Bind} ist zur Laufzeit etwas schneller, aber genauso wichtig ist, dass es bei fehlerhaften Bindungen zu Compilerfehlern kommt. Mit {Binding} sehen Sie in den meisten Fällen nur ein leeres Steuerelement.
{x:Bind}
Führt Spezialcode aus, der beim Kompilieren generiert wird. {Binding}
Verwendet die allgemeine Laufzeitobjektprüfung. Folglich bietet {x:Bind}
Eine hervorragende Leistung und ermöglicht die Validierung Ihrer verbindlichen Ausdrücke zur Kompilierungszeit. Es unterstützt das Debuggen, indem Sie Haltepunkte in den Codedateien festlegen können, die als Teilklasse für Ihre Seite generiert werden.
Da {x:Bind}
Generierten Code verwendet, um seine Vorteile zu erzielen, sind zur Kompilierungszeit Typinformationen erforderlich. Dies bedeutet, dass Sie keine Bindung an Eigenschaften herstellen können, bei denen Sie den Typ nicht im Voraus kennen. Aus diesem Grund können Sie {x:Bind}
Nicht mit der DataContext-Eigenschaft verwenden, die vom Typ Object ist und auch zur Laufzeit geändert werden kann. Die für Windows 10 neue Markuperweiterung {x:Bind}
Ist eine Alternative zu {Binding}
. {x:Bind}
Verfügt nicht über alle Funktionen von {Binding}
, Benötigt jedoch weniger Zeit und Speicher als {Binding}
Und unterstützt ein besseres Debugging.