WPF外包公司—北京動點飛揚軟體:WPF技術分享—Prism V2之旅(1)

來源:互聯網
上載者:User
概述

    如果你在開發wpf程式,應該聽說過The Composite Application Guidance for WPF(以下簡稱prism)

    總而言之,prism是協助你開發複雜的wpf應用程式的。希望在看完此系列教程以後能對你有所協助.

    從去年正式版發布至今,將近快半年了.silverlight 2正版的推出.prism也開始支援silverlight,而且這次是同時支援wpf和silverlight.這樣便統一了wpf和silverlight的編程,代碼的移植也更加的方便.現在prism最新的版本是Prism V2 - Drop 8.相對於第一個版本發生了一些變化.本文則基於Prism V2 - Drop 8這個版本進行介紹.如果你還在用7月份的那個版本可以看周銀輝寫的教程.

以下說明三個最基礎的概念.

 

一.被引導的Windows表單Shell

 

wpf程式在啟動時,需要一個宿主容器,一般情況下是System.Windows.Window,以下是一個剛建立的表單.

<Window x:Class="HelloWorldSample.Window1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Title="Window1" Height="300" Width="300">    <Grid>            </Grid></Window>

 

預設情況下,System.Windows.Application會通過設定StartupUri來運行主表單.

<Application x:Class="HelloWorldSample.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     StartupUri="Window1.xaml"></Application>

 

接著隨著prism架構的加入,運行主表單的方式改變了.因為prism要在表單運行之前做一堆事情,來為架構可以做的事情做鋪墊.所以我們要去掉StartupUri,手動啟動表單. prism通過一個名為Bootstrapper類作為引導程式,這裡我們先不管他做了什麼,只知道他起了程式的引導作用.

通過Bootstrapper的引導,這個表單就不再僅僅是一個單純的表單了,這個表單我們也可以稱為Shell,也可以理解為一個殼的意思.

二.被附加的內容地區Region

 

以asp.net中的主版頁面為例.

我們做網站之前總要先布局,那就得定模板,大家應該很熟悉,目的就是以主版頁面當容器,然後在定義的ContentPlaceHolder地區中塞內容.

一般情況下,定義了主版頁面以後,必定要其他Page來套用此主版頁面

 

 

這種做法本身很好,用wpf程式來實現也可以實現(可以參考此文),但比較麻煩.web程式與用戶端程式有一個本質的區別,web是無狀態的,用戶端程式就沒有這方面的問題.

假設web是有狀態的(假設哦),可以以使用者控制項替代,以aspx頁面為主版頁面,照樣定義容器,往裡面塞使用者控制項.

這種做法,現在的ajax程式應該很流行.

 

回到主題,prism架構通過附加屬性的方式給Shell定義自訂地區,標題說是附加的內容地區,如下代碼,

通過附加屬性的方式給ItemsControl定義了一個Region,ItemsControl就變成這個Region的容器了.

這裡的Region與asp.net主版頁面的ContentPlaceHolder的意義是相同的,只不過實現方式不同罷了.

<Window x:Class="HelloWorldSample.Shell"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:cal="http://www.codeplex.com/CompositeWPF"    Title="Composite Application Library Sample" Width="400" Height="300">    <ItemsControl cal:RegionManager.RegionName="MainRegion"/></Window>

 

注意:在這裡通過RegionManager附加屬性RegionName註冊的地區的功能,是在該表單執行個體化之前,通過Bootstrapper提供的,這就是上面的鋪墊作用.

三.被拆分的模組Module

     定義好Region內容地區以後,可以在Region中載入不同的模組的使用者控制項.每個模組都有著不同功能,一個功能強大的應用程式就是由不同的模組組成的.將應用程式的不同功能,拆分成不同的小模組開發,複雜度明顯就會降低.

好,到了這裡講明了三個點

1.Shell,主應用程式容器,prism功能的基石

2.Region,我們且稱之為內容地區,可以提供各個模組載入所需的視圖(即使用者控制項)

3.Module,程式的組成模組.

 

有了以上三個概念以後,我們便可以開始prism之旅了,如果你對以上概念還不是很清晰,沒有關係。以後會慢慢介紹.已經在用此架構的朋友,發現寫錯了請指出.下篇讓我們一起來探索Region的使用。

 

http://www.cnblogs.com/Clingingboy/archive/2009/01/06/prism_part1.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.