45 votes

Code XAML ou C #

Je n'aime pas utiliser XAML. Je préfère tout coder en C #, mais je pense que je fais les choses mal.

Dans quels cas il est préférable d'utiliser XAML et quand utilisez-vous C #? Quelle est votre expérience?

71voto

Will Eddins Points 6451

Créer une fenêtre entière en C # peut être un gâchis de code. La meilleure chose à propos de WPF est que XAML vous permet de séparer votre conception de votre logique, ce qui rend le code beaucoup plus facile à lire.

J'utilise C # pour créer des contrôles dynamiques, mais j'ai tendance à conserver ma conception générale, mes storyboards statiques, mes styles, mes modèles de données, etc. en XAML.

27voto

JP Alioto Points 33482

Regardez cette vidéo sur MVVM dans WPF. Si vous souhaitez comprendre comment organiser une application WPF en fonction de ce qui se passe dans XAML, du code arriéré et d'autres abstractions, c'est un excellent point de départ.

14voto

Daniel Earwicker Points 63298

Vous pouvez certainement aller trop loin avec XAML. Ceux qui veulent que leurs ensemble de l'interface utilisateur (y compris la logique, la gestion des événements de relations, etc) définis dans le code XAML sont probablement à côté de la question.

Le but de XAML est de fournir un format commun pour la détermination de la façon dont les choses devraient regarder. Il doit juste être une description de la façon de poser les choses, la façon de couleur et de style visuellement.

Il y a vraiment très peu de point en essayant de l'utiliser comme un remplacement pour d'autres aspects de C#, parce que le C# est un permanent de l'avance en termes de fonctionnalités de programmation de réutilisation (définition des types et des fonctions), en se référant à des variables, de la procédure de programmation, et même déclarative ou des styles fonctionnels.

Personnellement, j'aime vraiment jeter ensemble d'une INTERFACE utilisateur avec une expression Linq!

Le summum de l'absurde est atteint par un exemple que j'ai vu où ils ont utilisé des actions de flux de travail comme les enfants d'un bouton pour l'alimentation de l' Click gestionnaire, de sorte que l'ensemble du programme était en XAML. Il semble "cool", mais le problème était qu'il était beaucoup plus moche et illisible que son équivalent en C# ou VB.NET programme, et donc tout ce qui est prête à les utiliser en C# doit être remplacé par un autre plus détaillé, feuilletée équivalent. Rien n'a réellement été acquis par cette traduction d'une plus laide de la syntaxe, c'est le même programme qu'en plus moche. XML est une mauvaise base pour la syntaxe d'un langage de programmation général. Commençons par le fait que la plus grande-que le symbole doit être écrit comme >!

Dans un univers parallèle, Microsoft a publié de C# 3.0 avant d'avoir fini de XAML. Le code XAML de l'équipe a adopté C# 3.0 objet/liste d'initialiseur de syntaxe de XML comme leur syntaxe. Et tout le débat n'est jamais arrivé.

11voto

John Fisher Points 13621

Mon expérience est que certaines choses sont beaucoup plus rapides à faire en C #, alors que la plupart sont plus rapides à faire en XAML. Quand il faut 5 lignes de code C # pour faire ce qu'une seule ligne de code XAML peut faire, il est assez facile pour moi de choisir lequel est le meilleur.

5voto

Brian Genisio Points 30777

L'envie de vouloir écrire votre Isu en C# au lieu de XAML est vraiment juste une manifestation de la façon dont vous êtes à l'aise dans le code XAML.

Pour moi, c'est un objectif personnel d'écrire que peu de code-behind que possible. Très simplement, le code derrière est difficile de test unitaire, mais peut (et le fait habituellement) inclure une logique qui n'est pas testé. XAML est déclarative (comme le HTML) et ne comporte aucune logique, alors il n'y a rien de test unitaire. Je garde mon point de vue code XAML et je garde mon point de vue logique dans mon ViewModel (MVVM) qui est TRÈS facile à tester.

Une fois que vous devenez plus à l'aise avec XAML, plus vous vous rendrez compte de ses avantages plus de vue de la construction dans le code de procédure... à l'Aide d'un modèle comme MVVM, vous prenez un peu plus loin, et se rendre compte que le code-behind n'est utile que dans de rares cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: