2010-08-08 46 views
3

我正在創建一個基於它的輸出創建html文件的WPF(在c#)應用程序。有沒有一種方法可以在桌面應用程序中使用HTML「視圖」(來自asp.net mvc)的概念,而無需重新發明輪子?基本上我只想保存一個HTML輸出項目列表,這在Web應用程序中非常簡單(甚至在wpf桌面應用程序中使用綁定在窗口中顯示輸出),但對於我在桌面應用程序中的HTML輸出看起來笨重就像我會重新發明輪子,將靈活的html模板與我的程序一起用於數據輸出。輸出html的WPF應用程序

當然有一個快速和優雅的方式來做到這一點?謝謝!!

編輯:

舉個例子說,項目的輸出是名字(比爾,鮑勃·吉爾,弗蘭克)的清單,我想下面的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中,紅寶石等非常相似的方式),如果用戶定義類似的東西以下內容:

​​

我想知道是否有一種簡單的方法在桌面應用程序中使用該方法創建html文件?再次感謝大家!

+0

我試圖澄清這個問題,希望它有幫助! – evan 2010-08-08 16:17:44

+0

刪除WPF標記,它與此無關。 – 2010-08-08 18:17:25

回答

1

將您的數據以易於序列化爲XML的形式存儲 - 可以是實現XML序列化的類,也可以是ADO.NET DataSet。編寫用於將XML轉換爲XHTML的XSLT模板。使用XslCompiledTemplate類實現轉換。當然,這種方法需要你學習一些你可能不太瞭解的東西。 XSLT不是微不足道的,並且XML,XSLT和HTML中的細節會不時引起你的注意。但一旦你瞭解它,這是一個令人難以置信的強大的技術組合。我十年內沒有親手製作HTML文檔;我的出發點任何我必須製作的HTML文檔是一個XML文檔,其中包含其內容和用於呈現內容的XSLT轉換。

從WPF方面來看,您需要處理的唯一問題是在應用程序中顯示呈現的HTML。我已經完成了這兩種方式。一種是將WinForms WebBrowser控件包裝在UserControl中,該控件公開了Html依賴項屬性,以便我可以將我的視圖模型的Html屬性綁定到它。 (視圖模型都共享一個幫助程序類以獲取其XML並將其轉換爲HTML。)

將輸出獲取到WPF UI的另一種更困難的方法是完全繞過HTML並編寫呈現數據的XSLT轉換作爲XAML中的FlowDocument。實際上它本質上並不難,它只是引入了一些您必須考慮的新問題 - 而且,如果HTML製作真的是它的全部內容,那麼它可能完全不適合您的應用程序。但是,一旦你知道如何將XML數據轉換爲HTML,將其轉換爲XAML就是孩子們的遊戲。

+0

感謝您的詳細回覆,並感謝XSLT。我之前沒有使用這些模板,但我認爲這是我可以在很多情況下利用的東西!使用XSLT從XML到XAML有多難?(它比xml更難於使用html)?這對我目前的項目沒有任何幫助,但它似乎是標準化跨Web應用程序和桌面應用程序顯示信息的好方法嗎? – evan 2010-08-08 23:27:51

+0

將XML轉換爲XAML並不難。實際上,一旦瞭解了XamlReader的工作方式,就可以使用XML - > XSLT - > XAML - > CLR對象管道進行很多有趣和酷炫的工作。如果你的建議有一個難題,那就是弄清楚HTML/CSS和'FlowDocument'的對象模型之間的重大差異。我沒有詳細研究它,但我敢打賭,摺疊錢有一噸。 – 2010-08-09 17:06:32