xaml - data - xamarin listview binding




Différence entre Binding et x: Bind (2)

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

  • Ancien style {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 corrigés à la compilation
    • passe par défaut au mode OneTime plus économe

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

  • liaison directe BooleanToVisibility, sans ValueConverter
  • liaison de fonction étendue
  • moulage
  • 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 générer des erreurs de compilation pour les liaisons erronées. Avec {Binding}, vous ne verriez qu'un contrôle vide dans la plupart des cas.

Que faut-il utiliser dans UWP, Binding ou x:Bind et quelle est la différence entre eux?

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

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

Mais quelle est la différence entre eux?

Parce que "fonctionnellement largement équivalent" ne signifie pas équivalent.

Le lien de ma citation: MSDN

Donc ma question est:

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


{x:Bind} exécute un code à usage spécifique qu'il génère lors de la compilation. {Binding} utilise une inspection d'objet d'exécution à usage général. Par conséquent, {x:Bind} offre d'excellentes performances et fournit une validation au moment de 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 pour votre page.

Comme {x:Bind} utilise le code généré pour obtenir ses avantages, il nécessite 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 pouvant également ê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} n'a pas certaines des fonctionnalités de {Binding} , mais il s'exécute plus rapidement et avec moins de mémoire que {Binding} et prend en charge un meilleur débogage.





uwp