xaml Différence entre liaison et x: liaison




data-binding win-universal-app (2)

Quoi utiliser dans UWP, Binding ou x:Bind et quelle est la différence entre eux?

Parce que je vois beaucoup de messages où les gens utilisent Binding et que je ne lie que avec x:Bind dans UWP.

Sur la page d'accueil de MSDN, il est seulement indiqué que "les objets de liaison créés par {x:Bind} et {Binding} sont largement fonctionnellement équivalents." et que x:Bind est plus rapide .

Mais quelle est la différence entre eux?

Car "largement fonctionnellement équivalent" ne signifie pas équivalent.

Le lien de mon devis: MSDN

Donc ma question est:

Quelle est la différence en utilisant Binding ou x: Bind dans UWP?


Ce qui suit n’est probablement pas complet, mais certaines des principales différences sont

  • Style ancien {Binding }

    • se lie au DataContext
    • se lie à un nom de propriété, flexible sur le type de source réel


  • Nouveau style {x:Bind }
    • se lie à l'élément Framework (classe code-behind)
    • a besoin de tous les types fixés au moment de la compilation
    • par défaut au mode OneTime plus frugal

Et à partir de la version 14393 , {x:Bind } prend en charge:

  • liaison directe BooleanToVisibility, sans ValueConverter
  • liaison de fonction étendue
  • fonderie
  • indexeurs de dictionnaire

Le plus récent {x: Bind} est un peu plus rapide au moment de l'exécution, mais il est tout aussi important de donner des erreurs au compilateur pour les liaisons erronées. Avec {Liaison}, vous verrez simplement un contrôle vide dans la plupart des cas.


{x:Bind} exécute le code à usage spécial, qu'il génère au moment de la compilation. {Binding} utilise l'inspection d'objet d'exécution à usage général. Par conséquent, {x:Bind} a d'excellentes performances et fournit une validation à la compilation de vos expressions de liaison. Il prend en charge le débogage en vous permettant de définir des points d'arrêt dans les fichiers de code générés en tant que classe partielle de votre page.

Étant donné que {x:Bind} utilise le code généré pour obtenir ses avantages, il requiert des informations de type lors de la compilation. Cela signifie que vous ne pouvez pas vous connecter à des propriétés où vous ne connaissez pas le type à l'avance. De ce fait, vous ne pouvez pas utiliser {x:Bind} avec la propriété DataContext de type Object et également susceptible d'être modifiée au moment de l'exécution. L'extension de marquage {x:Bind} nouvelle pour Windows 10, est une alternative à {Binding} . {x:Bind} ne possède pas certaines des fonctionnalités de {Binding} , mais il fonctionne avec moins de temps et moins de mémoire que {Binding} et prend en charge un meilleur débogage.





uwp