WPF приложение, которое выводит html

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

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

РЕДАКТИРОВАТЬ:

В качестве примера, скажем, вывод программы был список имен (Билл, Боб, Джилл, Фрэнк), я хотел бы сохранить следующий 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 ответ

Решение

Храните ваши данные в форме, которая легко сериализуется в 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 становится детской игрой.

Другие вопросы по тегам