發表文章

目前顯示的是有「XAML」標籤的文章

Silverlight動畫與執行

圖片
撰文:吳俊毅 時間:2009/12/05 筆者超久沒寫文章了,因最近新公司實在太忙,平常每天就在加班,假日還要來,所以...OK~筆者今天要介紹關於執行Silverlight動畫的技巧,相信許多讀者都見識過WPF的動畫,在Kaxaml中有一個有趣又簡單的範例(跳動的彩球),如下: 筆者就直接拿他來說明,OK~它的Source Code如下: 由於預設的範例中已設定了EventTrigger,所以畫面一載入立刻就會執行動畫,且也將Storyboard的Duration屬性設為"Forever"了,所以動畫會一直無限次執行。 如果們希望動畫透過按下一個BUTTON才執行的話可以進行如下修改: 如上XAML程式碼,取消EventTrigger,並將Storyboard放入Grid.Resources中,原先的五個Ellipse須保留在Canvas中,然後再加入一個BUTTON。 接著在BUTTON的OnClick撰寫程式碼 (一行而已)         private void button1_Click(object sender, RoutedEventArgs e)         {             Storyboard1.Begin();         } 執行畫面如下:(按下Play後才會執行動畫)

再談XAML與WPF

圖片
撰文:吳俊毅 時間:2009/6/11 在筆者先前討論過XBAP應用程式後再一次回到WPF的主題,在這個章節中筆者要說明XAML與WPF之間的關係,讀者先往下看幾個主題。 1. 再談XAML 什麼是XAML呢,XAML是(eXtensible Application Markup Language)的簡稱,XAML發音為”zammel”,而XAML為一種標籤語言,關於這個部分市面上許多書籍都已經講過太多了筆者快速的帶過就好,簡單的說XAML承襲XML的Well-Format文件的所有特性,在這裡微軟透過XAML描述並呈現WPF應用程式的外觀,它可以設置.cs的後置檔,程式的事件與運算邏輯可由後置檔案完成,WPF可在<Window>標籤內的x:Class=”命名空間.類別名稱” 如下: <Window x:Class="WpfHelloWorldApp.Window1"> </Window> 當然XAML檔案不一定要有後置檔,如上程式若去除掉x:Class=”WpfHelloWorldApp.Window1” 的敘述即表示沒有後置檔案,而通常沒有後置檔的XAML程式碼通常稱為loose XAML(鬆散的XAML),這種檔案通常只是將XAML當做文件來使用,如XPS Document或WF的Flow Document文檔等,而XAML檔案執行時會預先被編譯成BAML(Binary Application Markup Language)的二進位直接檔案,但它是一個副檔名為.g.cs的檔案,在使用正式版本的Visual Studio IDE工具後您通常無法在檔案總管中察覺這個檔案的存在,若您在InitializeComponent()點選右鍵a”移至定義”所看到的程式內容便是IDE工具(auto-generated)自動產生的BAML內容,它會在obj\Debug 下產生,而同樣是一個繼承Window的類別,只是會多實作IComponentConnector介面,在InitializeComponent() 中會透過System.Windows.Application.LoadComponent()方法將XAML的內容讀取進來,筆者擷取一段BAML範例內容如下: public partial class Window...

如何手動或程式化產生XPS文件

圖片
文:吳俊毅 時間:2009/1/18 何謂XPS文件 XPS為(XML Parse Specification)的簡稱,我們知道XML已經是開放式資料交換的標準,於是以XML為基礎要提供一個更穩固的,開放的可信賴的電子文件交換格式應運而生,就是XPS,它可以經由硬體或是軟體來閱讀並提供更佳的列印品質,並可加入簽章容易用於機密文件的封存,微軟在Office 2007也已經完整加入此功能,Word 2007的docx其實就是XML Parse Specification文件格式。在.NET Framework 3.0中提供完整的API讓您能輕易的發佈或是匯入XPS文件,或是與WPF應用程式的整合等,今天筆者將完整介紹XPS,產生XPS方式,如何使用.NET Framework 3.o的API來產生XPS格式文件,廢話不多說,我們開始吧! XPS文件的結構 所謂的XPS文件其實是一個ZIP檔案,若讀者將其附檔名改成.zip使用Winzip或是一些支援ZIP的檢視器即可看見期內容,當然Windows XP/Vista的檔案總管本身即也支援ZIP解壓縮。 雖然我們通常並不會直接去編輯XPS文件的壓縮內容,但了解其內部包裝的內容對於我們快速的了解XPS是有幫助的,一個XPS文件的內容如下: XPS的物件階層 XPS文件定義在.NET Framework 3.0定義在XpsDocument類別中,該類別則定義在System.Windows.Xps.Package;的命名空間中,XpsDocument為一個完整XPS檔案組成,它定義了XPS整個的邏輯結構,由於一個XpsDocument是允許包含多個文件,這些文件則由FixedDocumentSequence來描述其順序關係,所以通常一個XpsDocument下會包含一個FixedDocumentSequence物件,FixedDocumentSequence下面會有FixedDocument物件來包裝FixedPage物件,整個XpsDocument結構如下圖: 產生XPS文件的幾種方式 1. 使用Microsoft XPS Document Writer印表機 2. 使用.NET Framrwork 3.0的System.Windows.Xps.Package命名空間提供的類別來產生 要產生XPS文件最快的方式當然是使用Micr...

WPF 與XBAP應用程式(2) 之 如何佈署XBAP應用程式

圖片
文:吳俊毅 時間:2009/1/8 接續第一篇WPF 與XBAP應用程式,我們已經可以正常的在Visual Studio 2008中正常的執行WpfBrowserBrushTest這個專案,但是這樣還沒完,我們必須將它佈署至IIS上頭,這樣才能夠使一般的使用者使用一般網站一樣的在IE中開啟這個網頁。 首先切換到專案的屬性畫面,並點選發行,表示我們將使用ClickOnce方式佈署,注意:這個動作需要以管理員身分來執行Visual Studio 2008,畫面如下:   請點選發行精靈按鈕,並如上圖的步驟建立一個名稱為WpfBrushTest的Web應用程式。若不是以管理員身分執行Visual Studio 2008,”本機IIS”按鈕是無法點出如圖中以結點方式顯示的本機的Web伺服器的畫面。   由於目前ClickOnce以內建在Visual Studio 2005/2008的專案屬性視窗內,ClickOnce為微軟推出,一套簡化許多安裝程序的一套安裝程式的Framework,有興趣的讀者可以參考筆者另一篇ClickOnce的文章!我們先走完我們的流程吧。 上面的動作很迅速的在IIS裡幫我們建立出一個應用程式,由於筆者使用Vista,Vista內建的是IIS 7的版本,如果讀者使用的Windows 2003或Windows XP等畫面可能會有些不太一樣,如下,筆者打開IIS 7看見並可點開WpfBrushTest站台   接著請讀者切換到內容檢視畫面,IIS 6或IIS 5.5不需要做此動作,然後在WfpBrowserBrushText.xbap按滑鼠右鍵點選瀏覽,表示直接執行這個應用程式,這時候IE上頭會顯示 未受與信任,如下: 如果點選開啟錯誤按鈕可以看見如下的詳細錯誤: 錯誤詳細資料 執行此作業時,偵測到下列錯誤。 * [2009/1/10 下午 11:05:15] System.Deployment.Application.TrustNotGrantedException (未知的子類型) - 使用者拒絕將執行所需的權限授與此應用程式。 - 來源: System.Deployment - 堆疊追蹤: 於 System.Deployment.Application.Applica...

WPF 與XBAP應用程式(1)

圖片
文:吳俊毅 時間:2009/1/1 開發環境: Visual Studio 2008 Team System 今年未去迎接2009年的第一道曙光,且筆者很久沒寫作文章了,所以想說寫一些關於WPF與XBAP應用程式 所謂的XBAP為(XAML Browser Application)的簡稱,他本身即是WPF應用程式,唯一不同於Window Form的WPF應用程式的是它是以Browser為Container,但是它執行的機器必須是有安裝.NET Framework 3.0的機器才可以執行,且IE7預設即為XBAP的Container,若您使用Visual Studio 2008 開啟一個WpfBrowserApplication專案並打開Page1的CS檔案會發現他是繼承Page這個類別,如下: public partial class Page1 : Page { public Page1() { InitializeComponent(); } } 而本篇文章為了測試我們撰寫的WPF應用程式能夠順利的移植到XBAP方式在Browser中執行嗎?以下為筆者先全撰寫的一WPF的Brush測試程式,當中有TextBox, Ellipse等相關元件,主要是測試WPF中的TextBox的ImageBrush筆刷的繪圖功能,有興趣的讀者請參考筆者另一篇WPF程式設計的文章,接著來看看這個範例: 此範例程式執行結果如下: 圖中的上面是一個TextBox控制項,使用圖片作為TextBox的底色,且字體也使用圖片作為筆刷,而呈現出來的效果,現在如果要將一改以XBAP應用程式方式執行會是什麼樣的結果呢,首先新增一個WpfBrowserApplication專案,並將下面藍色部分,也就是 .. 標籤內的內容複製到WpfBrowserApplication專案的Page1.xaml的Grid 中。 接著在預覽畫面也可以看見結果,如下圖: 接著我們就直接執行程式,執行後會發生一個錯誤,如下: 讀者應該也會收到此錯誤,這是因為在Browser的Container中預設XBAP應用程式是沒有存取IO的權限的,為什麼獨立的WPF執行檔的應用程式就可以直接執行呢,因為在Vista下獨立應用程式執行預設雖沒有管理者權限,但是還是有基本的IO存取權限,而XBAP為了安全性根據預設是不被完全信任的,許多...