WPF приложение, которое выводит html - PullRequest
3 голосов
/ 08 августа 2010

Я создаю приложение WPF (в c #), которое будет создавать HTML-файлы на основе его вывода. Есть ли способ использовать концепцию html 'view' (из asp.net mvc) в настольном приложении, не изобретая колесо? По сути, я просто хочу сохранить список выводимых элементов в формате html, который настолько прост в веб-приложении (и даже использует привязку в настольном приложении wpf для отображения вывода в окне), но кажется неуклюжим для вывода HTML в настольном приложении. как если бы я заново изобретал колесо для включения гибких HTML-шаблонов в свою программу для вывода данных.

Конечно, есть быстрый и элегантный способ сделать это? Спасибо !!

EDIT:

В качестве примера скажем, что выходные данные программы представляли собой список имен (Билл, Боб, Джилл, Фрэнк), я хотел бы сохранить следующий HTML-файл на диск:

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

если пользователь определил HTML-шаблон, такой как:

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

, что можно сделать в ASP.NET MVC (или очень похожим образом в PHP, ruby ​​и т. Д.), Если пользователь определил что-то похожее на следующее:

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

и я хотел бы знать, есть ли простой способ создания html-файлов с помощью этого метода в настольном приложении? Еще раз спасибо всем!

1 Ответ

1 голос
/ 08 августа 2010

Храните ваши данные в форме, которая легко сериализуется в XML - либо в классе, реализующем сериализацию XML, либо в ADO.NET DataSet. Напишите шаблоны XSLT для преобразования XML в XHTML. Реализуйте преобразования, используя класс XslCompiledTemplate.

Конечно, этот подход потребует от вас изучения некоторых вещей, о которых вы, вероятно, не очень много знаете. XSLT не тривиален, и в XML, XSLT и HTML есть тонкости, которые время от времени могут вас сбить с толку. Но как только вы изучите это, это невероятно мощное сочетание технологий. Я не создавал HTML-документ вручную в течение десятилетия; моей отправной точкой для любого HTML-документа, который мне нужно создать, является документ XML, содержащий его содержимое и преобразование XSLT для рендеринга содержимого.

Со стороны WPF единственная проблема, с которой вам придется столкнуться, заключается в отображении визуализированного HTML в вашем приложении. Я сделал это двумя способами. Один из них заключается в обёртывании элемента управления WinForms WebBrowser в UserControl, который предоставляет свойство зависимости Html, чтобы я мог привязать к нему свойство Html моей модели представления. (Все модели представлений имеют вспомогательный класс для получения XML и преобразования его в HTML.)

Другой, более сложный способ получить выходные данные в пользовательском интерфейсе WPF - полностью обойти HTML и написать XSLT-преобразование, которое отображает данные как FlowDocument в XAML. На самом деле, это не сложнее, это просто создает кучу новых проблем, о которых вам нужно подумать - также, это может быть совершенно неуместно для вашего приложения, если производство HTML - это действительно то, о чем идет речь. Но как только вы узнаете, как преобразовать данные XML в HTML, преобразование их в XAML становится детской игрой.

...