2010-08-08 4 views
3

Je crée une application WPF (en C#) qui créera des fichiers html basés sur sa sortie. Existe-t-il un moyen d'utiliser le concept d'un html 'view' (depuis asp.net mvc) dans une application de bureau sans réinventer la roue? Fondamentalement, je veux juste enregistrer une liste d'éléments en sortie en HTML qui est si simple dans une application web (et même en utilisant une liaison dans une application de bureau wpf pour afficher la sortie dans la fenêtre) mais semble maladroit pour la sortie HTML dans une application de bureau comme si je réinventais la roue pour inclure des modèles html flexibles avec mon programme pour la sortie de données.Application WPF qui affiche le code html

Sûrement il y a une manière rapide et élégante de faire ceci? Merci!!

EDIT:

À titre d'exemple dire la sortie du programme était une liste de noms (Bill, Bob, Jill, Frank), je voudrais enregistrer le fichier HTML suivant sur le disque:

<html> 
<body> 
<ul> 
<li>Bill</li> 
<li>Bob</li> 
<li>Jill</li> 
<li>Frank</li> 
</ul> 
</body> 
</html> 

si l'utilisateur a défini un modèle HTML tels que:

<html> 
<body> 
<ul> 
<li><!-- user name --></li> 
</ul> 
</body> 
</html> 

qui pourrait être fait dans ASP.NET MVC (ou d'une manière très similaire à PHP, rubis, etc.) si l'utilisateur définit quelque chose de similaire à les éléments suivants:

<html> 
<body> 
<ul> 
    <% foreach (string name in NameList) { %> 
     <li> 
     <%: name %> 
     </li> 
    <% } %> 
</ul> 
</body> 
</html> 

et je voudrais savoir s'il existe un moyen facile de créer des fichiers HTML en utilisant cette méthode dans une application de bureau? Merci encore tout le monde!

+0

J'ai essayé de clarifier la question, j'espère que ça aide! – evan

+0

Balise WPF supprimée, cela n'a rien à voir avec ça. –

Répondre

1

Stockez vos données sous une forme facilement sérialisée en XML - soit dans une classe qui implémente la sérialisation XML, soit dans un ADO.NET DataSet. Écrire des modèles XSLT pour transformer le XML en XHTML. Implémentez les transformations à l'aide de la classe XslCompiledTemplate. D'accord, cette approche exigera que vous appreniez des choses que vous ne connaissez probablement pas beaucoup. XSLT n'est pas trivial, et il y a des subtilités en XML, XSLT et HTML qui vont vous trébucher de temps en temps. Mais une fois que vous l'avez appris, c'est une combinaison incroyablement puissante de technologies. Je n'ai pas produit un document HTML à la main depuis une décennie; mon point de départ pour tout document HTML que je dois produire est un document XML qui contient son contenu et une transformation XSLT pour le rendu du contenu. Du point de vue de WPF, le seul problème que vous aurez à traiter est l'affichage du rendu HTML dans votre application. J'ai fait cela de deux façons. L'une consiste à entourer le contrôle WinForms WebBrowser dans un UserControl qui expose une propriété de dépendance Html, afin que je puisse lier la propriété Html de mes modèles de vue. (Les modèles de vue partagent tous une classe d'assistance pour obtenir leur code XML et le transformer en HTML.)

Un autre moyen plus difficile d'obtenir la sortie dans une interface utilisateur WPF est de contourner complètement HTML et d'écrire une transformation XSLT qui restitue les données. en tant que FlowDocument en XAML. Ce n'est pas vraiment plus difficile en soi, il introduit juste un tas de nouveaux problèmes auxquels vous devez penser - aussi, il peut être totalement inapproprié pour votre application, si la production HTML est vraiment ce dont il s'agit. Mais une fois que vous savez comment transformer les données XML en HTML, le transformer en XAML est un jeu d'enfant.

+0

Merci pour cette réponse détaillée et pour m'avoir invité sur XSLT.Je n'ai jamais utilisé ce genre de modèles auparavant, mais je pense que c'est quelque chose dont je pourrais profiter dans un certain nombre de situations !! À quel point est-il difficile de passer de XML à XAML en utilisant XSLT (est-ce beaucoup plus difficile que xml en html)? Cela n'aiderait pas mon projet actuel, mais il me semble que c'est un excellent moyen de standardiser la façon dont les informations sont affichées à la fois sur les applications Web et sur les applications de bureau. – evan

+0

Ce n'est pas du tout difficile de convertir XML en XAML. En fait, une fois que vous aurez compris comment 'XamlReader' fonctionne, il y a beaucoup de choses intéressantes et intéressantes que vous pouvez faire avec le pipeline d'objets XML -> XSLT -> XAML -> CLR. S'il y a une part importante dans ce que vous suggérez, c'est de déterminer quelles sont les différences matérielles entre HTML/CSS et le modèle objet de 'FlowDocument'. Je ne l'ai pas examiné en détail, mais je parierais que l'argent plie qu'il y en a une tonne. –

Questions connexes