WPF界面設計技巧(11)-認知流文檔 & 小議WPF的野心

原文: WPF界面設計技巧(11)-認知流文檔 & 小議WPF的野心

 

 

流文檔是WPF中的一種獨特的文檔承載格式,它的書寫和呈現方式都很像HTML,它也幾乎具有了HTML的絕大多數優點,並提供了更強的編程支持及對WPF其餘元素的兼容。html

 

直接來看代碼吧,須要講解的地方比較多,我就直接註釋在代碼裏了,看起來更方便些:編程

 

 

Code

 

<Grid.Resources>部分我定義了文檔的一些通用樣式,這就像內嵌的CSS。Style真是無處不在,嗯,他能比CSS作更多的事,但也更復雜一些。網絡

 

正文部分,咱們看到不少元素均可以找到其在HTML裏的對應,結合咱們在HTML中的經驗,這些均可以被輕鬆理解。工具

 

注意標題處引用的靜態資源title是我在別處定義的,在這裏看不到。佈局

 

後臺僅添加如下語句用於處理超連接點擊事件,由於獨立應用程序中不會自動處理它們:post

 

 

Code

 

 

下面看看顯示效果:測試

 

 

這是呈現出的文檔瀏覽界面,流文檔也支持被選取和複製。this

 

咱們使用的這種流文檔容器擁有一些實用的內置功能,好比分頁瀏覽,下面就是第二頁的樣子:編碼

 

 

如今,把窗口拉大,測試一下流文檔的變化:url

 

 

它像極了HTML,這種自適應性可讓咱們輕鬆地在多種環境下閱讀。

 

 

如今對文檔進行放大,能夠看到,文字、圖像都被放大了。這種特性一樣爲多環境閱覽提供了有效的幫助,尤爲是咱們但願經過投影或屏幕展現文檔時。

 

 

這是分欄閱讀,可能比較適合有讀書習慣的人使用吧,我是以爲沒什麼意義。

 

 

帶滾動條的閱讀方式,比較適合用在網頁和桌面程序界面裏。

 

 

文本搜索功能,和IE裏差很少同樣簡陋~~

 

能夠想象一下,在之後,咱們使用一份文檔就能夠用於軟件幫助、手冊印刷、投影展現、網頁呈現(支持移動設備)以及更多應用(如盲人閱讀),而自始至終都不須要作任何修改或轉換。

 

 嗯,爲了實現這一構想,咱們從如今作起,把硬編碼在程序中的流文檔分離出來:

 

分離出的流文檔文件:

 

 

 

Code

 

很長啊,主要是由於我把以前那個標題圖形資源「title」給加進來了。

 

咱們在這裏取消了超連接的事件,而且將一些通用的樣式定義也取消了,由於咱們要的是一個比較乾淨、純粹的獨立文檔,通用的樣式應該留給使用方去按需求定義。

 

一個聽起來不錯的消息是:它如今能夠直接被IE打開並閱讀了

 

 

 

 

IE也自動使用咱們以前用過的流文檔閱讀器來呈現流文檔。

 

接下來還要修改一下咱們先前的程序,以使之能載入這個文檔。

 

 

Code

 

這是修改後的前臺代碼。

 

超連接樣式定義中加入了一個事件設置器,爲超連接的點擊事件設置爲先前的處理程序。

 

流文檔閱讀器增長一個事件用於在讀取後載入咱們分離出去的流文檔。

 

 

Code

 

後臺就是兩個事件處理,很簡單。

 

這樣就能夠完美還原到咱們以前所做的效果了,爲了提升感性認識,我把前面的貼圖再弄過來個充數~~

 

 

 

 

總結一下,流文檔技術如今還不能讓人滿意:應用覆蓋面低,就連SilverLight都沒有對其支持;沒有配套編輯軟件,如今手寫代碼是最好的編輯流文檔的途徑,使用RichTextBox只能進行比較簡單的格式編輯,期待下一版的Office可以全力支持這一新格式。

 

這些問題的解決應該都只是時間問題,流文檔的設計很是簡約、完善,定位十分準確,相信會成爲將來網絡文檔的主要載體。

 

或許有人會問,這麼一個和HTML極度類似的東西有什麼意義?

 

首先他和HTML定位不同,至少是和HTML如今的定位不同。咱們拿到一個流文檔,很明確的知道它就是一份文檔;但拿到一個HTML,即便它格式再規範,咱們也不肯定它是什麼東西,它裏面可能摻雜了不少頁頭、頁腳、導航連接、菜單、佈局塊、側邊欄、腳本等等,它就是個大雜燴,咱們的程序並不喜歡這種不肯定的東西。

 

HTML設計之初也就是用於呈現簡單的文檔,但如今日益膨脹的應用,使得它不得不本身承擔起佈局、美化、處理交互等等行爲;而咱們WPF徹底不需顧慮這些,一個簡單到乏味的DockPanel在2分鐘內創造的佈局,使用CSS+XHTML可能須要半小時甚至更多的時間才能建立並調試完成,而當咱們決定從新調整佈局位置時也能一樣輕鬆的完成,換成CSS就是在經歷噩夢了(是的,它之前就是這麼說表格佈局的,事實證實,它們都是噩夢),而Grid更是會讓全部網頁設計師撓牆。

 

因此你不會看到我去絞盡腦汁地將一個TextBlock定義爲一個側邊欄,或是將一個List變爲導航菜單,WPF有更精確、更適用的元素用於佈局和交互,而HTML不得不靠整容來完成,那些隨之產生的無語義的標記就好像墊鼻樑、鹽水袋豐胸同樣讓我以爲噁心。

 

HTML如今被廣泛稱之爲網頁,是的,你閉着眼睛也能在互聯網上找到不少HTML「頁」,但你很難見到一份HTML「文檔」。WPF的Page就是頁、Window就是窗口、Document就是文檔,很是清晰明確。

 

HTML混亂、陳舊的現狀其實就是WPF的巨大機遇,這也應該就是微軟的野心所向,單純以技術能力來說,WPF能夠絕不費力的橫掃HTML、Flash、AIR,其所欠缺的,就是咱們的推進了。

 

 

原本還想寫出流文檔的編輯和輸出呢,一看都2W多字了~~下次再說了~~~

 

源文件

相關文章
相關標籤/搜索