Prism V 2の旅(1)


概要


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月のバージョンで周銀輝のチュートリアルを見ることができます.
以下に3つの最も基礎的な概念を説明する.
 

一.起動された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領域に内容を詰めることです.
一般的に、マスターページを定義した後は、必ず他のページにマスターページを適用します.
 
 
このようなやり方自体は良く、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に異なるモジュールのユーザコントロールをロードすることができる.各モジュールには異なる機能があり、強力なアプリケーションは異なるモジュールから構成されている.アプリケーションの異なる機能を異なるモジュールに分割して開発すると、複雑度が著しく低下する.
はい、ここに着いて3つの点を説明しました.
1.Shell、メインアプリケーションコンテナ、prism機能の礎
2.Regionは、コンテンツ領域と呼ばれ、各モジュールのロードに必要なビュー(ユーザーコントロール)を提供します.
3.Module,プログラムの構成モジュール.
 
以上の3つの概念があれば、prismの旅を始めることができます.もしあなたが以上の概念に対してまだはっきりしていなければ、関係ありません.後でゆっくり紹介します.すでにこのフレームワークを使っている方は、書き間違えたことに気づきましたのでご指摘ください.次はRegionの使い方を探ってみましょう.