Quelles sont vos stratégies pour utiliser Expression Blend sur des applications WPF complexes et découplées?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

Question

Je fais des applications WPF avec le modèle MVVM à l'aide de Visual Studio, en codant C # et XAML principalement à la main.

Maintenant, je me suis familiarisé avec Expression Blend pour pouvoir cliquer rapidement sur les applications WPF en utilisant simplement l'interface graphique, ce qui est très agréable. Bien plus de contrôle de la mise en page que de jouer avec tous les éléments XAML. 80% votre temps.

Mais il semble que mes applications dans Expression Blend sont plus simples et nécessairement couplées, en utilisant des événements gérés dans le code qui se trouve derrière, etc.

J'ai du mal à imaginer comment passer de cette approche plus simple d'Expression Blend à une application MVVM découplée avec des vues, des modèles View, des événements et des commandes routés, etc. autrement que de prendre tout mon projet dans Visual Studio et de le réorganiser. au point que je ne pouvais plus vraiment l'éditer visuellement dans Blend, mais que je serais revenu à utiliser Blend pour créer de petits morceaux de XAML que je collerais dans Visual Studio.

Pour ceux d'entre vous qui travaillent avec des applications plus complexes avec Expression Blend, quelles sont vos stratégies pour que vos projets restent découplés de manière MVVM, tout en étant structurés "à la manière d'Expression Blend"? (où vous pouvez toujours voir et éditer des parties entières de votre application d’une manière qui a du sens visuellement) afin de pouvoir continuer à les éditer dans l’interface graphique de Blend alors qu’elles évoluent?

Était-ce utile?

La solution

J’ai d’abord utilisé Blend comme outil de prototypage rapide. Pour cela, je l’aime vraiment beaucoup. En particulier, je trouve cela très utile quand je ne suis pas sûr de savoir comment configurer les choses pour obtenir la disposition / le comportement que je veux.

Je modifie rarement mes fichiers de projet principaux directement dans Blend. Je trouve que cela crée un balisage inutilement complexe ou prolixe. De plus, à mesure que je me familiarise avec WPF / XAML, je me retrouve de moins en moins avec Blend.

Autres conseils

J'utilise Blend pour l'interface utilisateur de mes projets depuis la version 1. Etant donné que mon objectif est d'intégrer pleinement le concepteur au projet, j'ai exploré tout ce qui s'opposait à cet objectif. Bien que ne sachant pas MVVM depuis un certain temps, je suis naturellement parvenu à la même conclusion et ai créé ViewModels sans savoir qu’il existait un modèle. Maintenant, avec l'aide d'autres personnes qui travaillent au MVVM, les choses s'améliorent constamment. J'ai maintenant développé 3 applications avec une interface utilisateur riche et des fonctionnalités dans lesquelles toute l'interface utilisateur était réalisée dans Blend. Lisez l'article de Josh Smith sur MSDN, examinez le travail de Jason Dolinger et le travail de Karl Shifflett pour n'en citer que quelques-uns.

Examinez attentivement l'utilisation de ICommand, INotifyPropertyChanged, ObservableCollections.

Recherchez également comment vous pouvez manipuler les contrôles de votre ViewModel. ICollectionView est un exemple. Supposons que vous ayez une liste d’animaux et que vous souhaitiez les filtrer par un ensemble de types (oiseaux, mammifères, etc.)

En utilisant ICommand et ICollectionView, vous pouvez exposer suffisamment de contrôles pour permettre au concepteur de créer une zone de liste pour afficher les animaux et un menu pour afficher la liste de filtres. ICollectionView contient suffisamment de fonctionnalités pour savoir quelle est la sélection actuelle et si vous aviez des commandes basées sur ICommand pour "SortByBird", "SortByMammal", etc., lorsque le concepteur a créé le menu (le contexte de la fenêtre a été défini). ViewModel pour cette fenêtre) fournirait au concepteur les options appropriées pour se lier.

Je travaille actuellement avec une autre équipe de mon entreprise pour expliquer comment mes projets ont été conçus et réagit de manière positive au nouveau rôle du concepteur utilisant Blend.

Je n'ai pas réussi à utiliser Blend bout à bout pour cela.

Je trouve que dans le cas général, il est plus rapide d’éditer xaml à la main dans VS. Blend est très facile à utiliser, et ce n'est pas très rapide pour couronner le tout.

Un autre domaine dans lequel Blend est vraiment utile est la création de styles / modèles à partir de contrôles existants.

À part ça, je ne suis pas encore vendu. Ses capacités diminuent lorsque vous utilisez des données-données instanciées en code, ce n’est donc pas une aide, et elle a tendance à générer des balises inutiles, des tailles statiques, etc., ce que je n’aime vraiment pas.

Blend est idéal pour vous donner une idée de la façon dont les choses peuvent être faites, mais le xaml qu’il crée est terrible et étroitement couplé. En apprenant mieux le côté xaml des choses, vous constaterez qu'il est beaucoup plus rapide d'écrire le xaml que d'utiliser Blend. Jusqu'à ce que vous en arriviez à ce point, vous pouvez effectuer vos modifications dans Blend, mais vous devez alors refactoriser le xaml qu'il crée pour le rendre moins étroitement couplé et éliminer les éléments d'interface utilisateur superflus.

Je suis un peu en retard à cette fête, mais j'espère que quelqu'un pourra toujours répondre. Je n'ai pas encore trouvé de résultat de recherche qui décrit le processus permettant de tracer une ligne de démarcation entre le concepteur et le programmeur. La première partie étant MVVM, il n’ya donc pas de couplage entre l’interface graphique et la "logique métier" sous-jacente, et je travaille dur pour l’apprendre à l’heure actuelle. L’autre partie sur laquelle je n’ai jamais entendu parler est de savoir comment créer un projet dans Blend afin que le développeur puisse vous fournir une sorte de DLL d’interface graphique, puis que l’interface de votre application change comme par magie.

Voici ce que je recherche: le développeur écrit son code comme d'habitude et écrit également une interface graphique très basique prouvant que tout fonctionne comme prévu. Pendant ce temps, le concepteur crée sa petite interface graphique géniale avec toutes les fonctionnalités d’utilisation auxquelles les utilisateurs s’attendent. Le développeur peut désormais exécuter son application avec son interface graphique, mais peut également basculer à la volée sur l'interface graphique du concepteur.

Je suppose que si cela ne peut pas être fait à la volée, cela signifie-t-il que, dans le cas idéal, le développeur aurait sa solution VS inclure le XAML de la solution Blend? Ensuite, dans App.xaml, faites simplement référence à un fichier de démarrage différent?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top