gpt4 book ai didi

c# - 输出 html 的 WPF 应用程序

转载 作者:可可西里 更新时间:2023-11-01 14:58:21 24 4
gpt4 key购买 nike

我正在创建一个 WPF(在 c# 中)应用程序,它将根据它的输出创建 html 文件。有没有一种方法可以在桌面应用程序中使用 html“ View ”(来自 asp.net mvc)的概念而无需重新发明轮子?基本上我只想在 html 中保存一个输出项目列表,这在 web 应用程序中非常简单(甚至在 wpf 桌面应用程序中使用绑定(bind)来在窗口中显示输出)但我觉得桌面应用程序中的 HTML 输出看起来很笨重就像我要重新发明轮子,在我的数据输出程序中包含灵活的 html 模板。

肯定有一种快速而优雅的方法来做到这一点吗?

举个例子,程序的输出是一个名字列表(Bill、Bob、Jill、Frank),我想将以下 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 文件?

最佳答案

以易于序列化为 XML 的形式存储您的数据 - 在实现 XML 序列化的类中或 ADO.NET DataSet 中。编写用于将 XML 转换为 XHTML 的 XSLT 模板。使用 XslCompiledTemplate 类实现转换。

诚然,这种方法需要您学习一些您可能不太了解的知识。 XSLT 并非微不足道,XML、XSLT 和 HTML 中的微妙之处有时会让您感到困惑。但是一旦你学会了它,它就是一种非常强大的技术组合。十年来我没有手工制作过 HTML 文档;对于我必须生成的任何 HTML 文档,我的起点是包含其内容的 XML 文档和用于呈现内容的 XSLT 转换。

从 WPF 方面来看,您需要处理的唯一问题是在您的应用程序中显示呈现的 HTML。我已经通过两种方式做到了这一点。一种是将 WinForms WebBrowser 控件包装在一个 UserControl 中,该控件公开一个 Html 依赖属性,这样我就可以绑定(bind)我的 View 模型的 Html 属性。 (所有 View 模型都共享一个辅助类,用于获取它们的 XML 并将其转换为 HTML。)

另一种更难将输出输入 WPF UI 的方法是完全绕过 HTML 并编写 XSLT 转换,将数据呈现为 XAML 中的 FlowDocument。它本身并不难,它只是引入了一堆你必须考虑的新问题——而且,它可能完全不适合你的应用程序,如果 HTML 生产真的是它的全部。但是,一旦您知道如何将 XML 数据转换为 HTML,将其转换为 XAML 就是小菜一碟。

关于c# - 输出 html 的 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com