4

出力に基づいてhtmlファイルを作成するWPF(c#)アプリケーションを作成しています。ホイールを再発明せずに、デスクトップアプリケーションでhtmlの「ビュー」(asp.net mvcから)の概念を使用する方法はありますか? 基本的に、出力されたアイテムのリストをhtmlに保存したいだけです。これは、Webアプリケーションでは非常に単純です(wpfデスクトップアプリケーションでバインディングを使用してウィンドウに出力を表示することさえできます)が、デスクトップアプリケーションでの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ファイルを作成する簡単な方法があるかどうか知りたいですか?

4

1 に答える 1

2

XML に容易にシリアル化できる形式 (XML シリアル化を実装するクラスまたは ADO.NET のいずれか) でデータを格納しますDataSet。XML を XHTML に変換するための XSLT テンプレートを記述します。XslCompiledTemplateクラスを使用して変換を実装します。

確かに、そのアプローチでは、おそらくあまり知らないことを学ぶ必要があります。XSLT は些細なことではなく、XML、XSLT、および HTML には微妙な点があり、時々つまずくことがあります。しかし、一度学べば、それは信じられないほど強力なテクノロジーの組み合わせです。この 10 年間、手作業で HTML ドキュメントを作成したことはありません。私が作成しなければならないHTML ドキュメントの出発点は、コンテンツを含む XML ドキュメントと、コンテンツをレンダリングするための XSLT 変換です。

WPF 側で対処する必要がある唯一の問題は、アプリケーションでレンダリングされた HTML を表示することです。私はこれを2つの方法で行いました。1 つは、依存関係プロパティを公開するに WinFormsWebBrowserコントロールをラップして、ビュー モデルのプロパティをそれにバインドできるようにすることです。(ビュー モデルはすべて、XML を取得して HTML に変換するためのヘルパー クラスを共有します。)UserControlHtmlHtml

WPF UI に出力を取得するもう 1 つの難しい方法は、HTML を完全にバイパスし、データをFlowDocumentXAML としてレンダリングする XSLT 変換を作成することです。それ自体は実際には難しくありません。考えなければならない新しい問題がたくさん発生するだけです。また、HTML の生成が本当に目的である場合、アプリケーションにとってまったく不適切な場合もあります。ただし、XML データを HTML に変換する方法がわかれば、それを XAML に変換するのは簡単です。

于 2010-08-08T18:38:05.737 に答える