2009-11-10 6 views
3

Le produit de mon entreprise est, à la base, un cadre pour le développement d'interfaces utilisateur pilotées par métadonnées. Je ne sais pas comment le décrire de façon moins succincte, et j'espère que je n'en aurai pas besoin pour cette question, mais nous verrons. J'ai essayé de mettre au point sur WPF, et j'ai construit des prototypes d'interface utilisateur ici et là, et récemment j'ai décidé de voir si je pouvais utiliser Expression Blend pour aider à la conception de ces interfaces utilisateur. Et je suis assez mystifié à ce stade.Dois-je utiliser Expression Blend pour concevoir des interfaces utilisateur vraiment dynamiques?

Il me semble que Expresssion Blend est conçu dans l'attente que vous connaissiez déjà tous les objets qui seront présents dans l'interface utilisateur au moment du design. Mais notre programme génère ces objets dynamiquement au moment de l'exécution. Par exemple, une ligne de données peut être présentée dans un StackPanel horizontal contenant alternativement TextBlocks (pour les légendes) et TextBoxes (pour les champs de données). Le nombre de ces objets dépend des métadonnées sur le nombre de colonnes dans la ligne de données. Je peux, assez facilement, écrire du code qui parcourt un enregistrement de métadonnées et remplir dynamiquement un StackPanel, en configurant la liaison de tous les contrôles aux propriétés des données ou des métadonnées. (La largeur d'un TextBox peut être liée à des métadonnées, tandis que son texte est lié à des données.)

Mais je ne peux même pas commencer à comprendre comment faire quelque chose comme ça dans Expression Blend. Je peux créer manuellement tous ces contrôles, de sorte que j'ai un ensemble de contrôles que je peux appliquer des styles et travailler sur la conception visuelle de l'application, mais c'est vraiment une douleur de le faire.

Je peux écrire du code qui traverse mon modèle de données et émet du code XAML pour tous ces contrôles, je suppose, puis le copier et le coller. Mais je vais me sentir vraiment stupide s'il y a un moyen de faire ce genre de chose dans Expression Blend et que je suis retombé et puni parce que je suis trop faible pour trouver la bonne façon d'y penser.

Est-ce suffisamment d'informations pour que quelqu'un essaie de formuler une réponse?

Répondre

3

Je pense que le mélange d'expression est un très bon choix surtout si vous voulez concevoir des interfaces utilisateur dynamiques et datadriven. Vous pouvez utiliser Blend pour dessiner des DataTemplates qui définissent comment un objet de données unique doit être présenté à l'écran. Par exemple, si vous avez un objet de type Personne, vous pouvez définir les contrôles comme les zones de texte, les bordures etc. qui doivent ensuite être générées automatiquement pour chaque personne de votre liste. Vous pouvez ensuite remplir vos ItemsControls (DataGrid, ListView, TreeView ...) avec ces databojets dynamiques et WPF sait comment les rendre. Si un Persopn est supprimé de la liste, l'élément visuel généré sera également supprimé. Ceci est juste un exemple simple toute la notion de données dynamiques est profondément cuite dans WPF et vous pouvez accéder à ces fonctionnalités en utilisant blend.

Pour pouvoir concevoir les datatemplates dans l'expression blend, vous devez provide sample designtime data.

Egalement pour être efficace avec tout cela, il est d'un grand avantage si vous respectez le design MVVM.