訳注
Visual Studio Community 2015では、このドキュメントのとおりに、実装するとエラーが発生し、実行できません。 一方、「Prism 5.0 for WPF」 パッケージに入っているQS-Hello World QuickStartソリューションは、実行できます。
そこで、このドキュメントを参考に、QS-Hello World QuickStartソリューション内のコードに従い、作業する必要があります。
17: Getting Started Using the Prism Library 5.0 for WPF Hands-on Lab(原文)
Microsoft Prism Library 5.0 for WPFの開発者のガイドから
このlab and associatedサンプルで、あなたは、Prism Libraryを使用して、モジュール・アプリケーション開発の基本的な概念を学びます。 そして、ソリューションを作成するために、それらを適用します。 あなたは、それを、複合Windows Presentation Foundation (WPF)アプリケーションを構築するための出発点として使用することができます。 このラボを完了した後に、あなたは、次のことを行うことができます。:
- あなたは、Prism Libraryに基づいて、新しいソリューションを作成するでしょう。
- あなたは、モジュールを作成して、読み込むでしょう。
- あなたは、ビューを作成し、シェルウィンドウにそれを表示するでしょう。
システム要件
System Requirements
このガイダンスは、Microsoft Windows 8、Windows 7、Windows Vista、Windows Server 2012やWindows Server 2008 OS上で実行するように設計されています。 この手引きを用いてビルドされたWPFアプリケーションは、.NET Framework 4.5を必要とします。
あなたは、Prismライブラリを使用する前に、以下をインストールする必要があります。:
- Microsoft Visual Studio 2013 Professional、Premium、あるいは、Ultimate版
- Microsoft .NET Framework 4.5(Visual Studio 2013と一緒にインストールされる)オプション・ツール:
- Visual Studio 2013のためのMicrosoft Blend。
準備
Preparation
このトピックは、あなたに、NuGetからダウンロードすることができる、次のPrism LibraryとUnityアプリケーション・ブロック(Unity)アセンブリを持っていることを、要求します。:
- Prism
- Prism.UnityExtensions
備考
このhands-on labは、Unityコンテナを使用しますが、 また、あなたは、Prism Libraryに、拡張管理フレームワーク(MEF)を使用することができます。
このhands-on labは、あなたが、Prismの基本的な概念を理解していることを想定しています。 詳細については、序文のPrismの重要な概念を参照してください。
手順
Procedures
このラボには、次のタスクが含まれています。:
- タスク 1:Prism Libraryを使用して、ソリューションを作成する
- タスク 2:モジュールを追加する
- タスク 3:ビューを追加する
次の項目では、これらのタスクの各々を説明します。
備考
このhands-on labのための説明は、HelloWorldソリューションに配置されています。 Visual Studioで、ソリューションを開きます。 ファイルは、デスクトップでのみ実行します。-QS - Hello World QuickStart.lnkを開きます。
タスク1:Prism Libraryを使用して、ソリューションを作成する
このタスクで、あなたは、Prism Libraryを使用して、ソリューションを作成するでしょう。 あなたは、あなたの複合のWPFアプリケーションの開始点として、このソリューションを使用することができます。 ソリューションは、推奨される方法と技術とPrismの手順のための基礎が含まれています。 Prism Libraryと一緒にソリューションを作成するために、次のタスクを実行する必要があります。:
- シェル・プロジェクトで、ソリューションを作成します。このタスクで、 あなたは、最初のVisual Studioソリューションを作成し、 そして、Prism Libraryを使用して構築されるソリューションの基礎となる、WPFアプリケーション・プロジェクトを追加します。 このプロジェクトは、シェル・プロジェクトとして知られています。
- シェルウィンドウを設定する。このタスクで、 あなたは、分離した方法で、異なるユーザー・インターフェイス(UI)コンポーネントを格納するために、 ウィンドウ、シェルウィンドウを構成しました。
- アプリケーションのブートストラッパーを構成する。 このタスクで、あなたは、アプリケーションを初期化するコードを構成します。
次の手順は、シェル・プロジェクトとソリューションを、どのように、作成するかを説明します。 シェル・プロジェクトは、Prism Libraryを使用して構築される、代表的なアプリケーションの基準です。 -これは、ブートストラッパーとして、知られているアプリケーションの起動コード、 そして、Viewが、一般的に、表示されるメインウィンドウ(シェルウィンドウ)が含まれている、WPFアプリケーション・プロジェクトです。
シェル・プロジェクトとソリューションを作成するために
- Visual Studioで、WPFアプリケーションを新規作成します。これを実行するには、FileメニューのNewを指し、そして、Projectをクリックします。 Project型リストで、Visual C#ノードの内側で、Windowsを選択します。Templateボックスで、WPFアプリケーションをクリックします。 最後に、プロジェクトの名前を、HelloWorld.Desktopに設定します。有効な場所を指定し、そして、OKをクリックします。 次の図で示すように、Visual Studioは、HelloWorldプロジェクトを作成するでしょう。このプロジェクトは、あなたのアプリケーションのシェル・プロジェクトです。
- HelloWorldプロジェクトで、次のNuGetパッケージに、参照を追加します。:
- Prism。PrismのためのNuGetパッケージ・マネージャ検索で、このパッケージには、モジュール、ログイン・サービス、通信サービス、 そして、いくつかの中心となるインターフェイスのための定義のような、rism Library構成コンポーネントの実装が含まれています。 また、それには、Prism Libraryコンポーネントの実装が含まれています。それは、領域、イベントとMVVMが含まれる、WPFアプリケーションを対象とします。
- Prism.UnityExtensions.。NuGetパッケージ・マネージャで、Prism.UnityExtensionsを検索します。 このパッケージには、Microsoft.Practices.UnityExtensionsアセンブリが含まれています。 それは、ユーティリティ・クラスが含まれています。あなたは、Prism Libraryで構築されるアプリケーションで、再利用することができます。 それは、Unityアプリケーション・ブロックを利用します。例えば、それには、ブートストラッパー基底クラス、UnityBootstrapperクラスが含まれています。 それは、アプリケーションの起動時に、既定のPrism Libraryサービスとともに、Unityコンテナを作成し、そして、設定します。
シェルウィンドウは、Prism Libraryに基づいた、アプリケーションの最上位のウインドウです。 このウィンドウは、他のもので、動的に埋め込まれる、それ自体のための方法を公開している、異なるUIコンポーネントを格納するための場所です。 そして、また、それは、メニューとツールバーのような、共通のUI要素が含まれているかもしれません。シェルウィンドウは、アプリケーションの全体の外観を設定します。
次の手順は、シェルウィンドウを、どのように、設定するかについて説明します。
シェルウィンドウを設定するには
Solution Explorerで、ファイルMainWindow.xamlの名前をShell.xamlに変更します。 Visual Studio再構成ツールを使用して、シェル化するために、コード・ビハインド・ファイルShell.xaml.csを開き、 そして、MainWindowクラスの名前を変えます。これを実行するには、クラス署名の中で、Refactorを指し、MainWindowを右クリックします。 そして、その次に、名前を変更をクリックします。次の図に示すように、ダイアログボックスの名前を変更で、新しい名前として、Shellを入力します。 そして、OKをクリックします。Preview Changeの場合、-表示されるダイアログ・ボックスの名前を変更し、適用をクリックします。
MainWindowの名称変更は、Visual Studio再構成ツールを使用しています。
-
XAMLビューで、Shell.xamlファイルを開きます。そして、その次に、次に示す属性値を、ウィンドウのルート要素に設定します。:
- x:Class = "HelloWorld.Desktop.Shell"(これは、コード・ビハインド・クラスの名前と一致します)
- Title = "Hello World"
あなたのコードは、次のように見える必要があります。
XAML
<Window x:Class="HelloWorld.Desktop.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Hello World" Height="300" Width="300"> <Grid> </Grid> </Window>
Region
次の手順は、ItemsControlコントロールをシェルウィンドウに、どのように、追加するか、そして、それに領域を関連付けるかを説明します。 以降のタスクでは、あなたは、Viewを、この領域に動的に追加します。
領域をシェルウィンドウに追加するには
- Shell.xamlファイルでは、ルートウィンドウ要素に、次の名前空間定義を追加します。
あなたは、Prism Library内で定義されている領域のための添付プロパティを使用するために、この名前空間が必要です。
XAML
xmlns:prism=http://www.codeplex.com/prism
- 次のコードで示すように、MainRegionという名前のItemsControlコントロールで、シェルウィンドウ内のGridコントロールを置き換えます。
XAML
<Window x:Class="HelloWorld.Desktop.Shell" xmlns:prism="http://www.codeplex.com/prism" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Hello World" Height="300" Width="300"> <ItemsControl Name="MainRegion"/> </Window>
次の図は、Designビューのシェルウィンドウを表示します。
- ItemsControlコントロール定義で、次のコードで示すように、添付プロパティprism:RegionManager.RegionNameを「MainRegion」に設定します。
この添付プロパティは、示します。MainRegionという名前が付けられたその領域は、コントロールに関連付けられています。
XAML
<ItemsControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion"/>
備考
シェルウィンドウが、インスタンスを生成するとき、WPFは、prism:RegionManager.RegionName添付プロパティの値を解決します。 そして、RegionManagerクラスで、コールバックを呼び出します。このコールバックは、領域を作成し、そして、ItemsControlコントロールとそれを関連付けます。
ブートストラッパー
Bootstrapper
ブートストラッパーは、Prism Libraryを使用する、アプリケーションの構築の初期化のための役割を果たします。 Prism Libraryには、UnityBootstrapperとMefBootstrapperクラスが含まれています。 それは、あなたのアプリケーションのコンテナとして、UnityやMEFのどちらでも使用するために必要な機能のほとんどを実装しています。 あなたが、UnityやMEF以外のコンテナを使用している場合、あなたは、あなた独自のコンテナ固有のブートストラッパーを記述する必要があります。
次の手順は、アプリケーションのブートストラッパーを、どのように、設定するかについて説明します。
アプリケーションのブートストラッパーを設定するには
- HelloWorldプロジェクトに、Bootstrapper.csという名前の新しいクラス・ファイルを追加します。
- ファイルの一番上に、次に示す、usingステートメントを追加します。
あなたは、UnityBootstrapperクラス内で参照される要素を参照するために、それらを使用するでしょう。
C#
using System.Windows; using Microsoft.Practices.Prism.Modularity; using Microsoft.Practices.Prism.UnityExtensions; using Microsoft.Practices.Unity;
- UnityBootstrapperクラスから継承する、Bootstrapperクラスの署名を更新します。
C#
class Bootstrapper : UnityBootstrapper { }
- Bootstrapperクラスで、CreateShellメソッドを上書きします。
次のコードで示すように、このメソッドでは、シェルウィンドウのインスタンスを作成して、それを返します。
C#
protected override DependencyObject CreateShell() { return new Shell(); }
備考
あなたは、領域マネージャー・サービスのインスタンスをそれに添付させるために、 UnityBootstrapper基底クラスを持つために、シェル・オブジェクトを返します。 領域マネージャー・サービスは、アプリケーションの領域を管理する、Prism Libraryに含まれるサービスです。 シェルウィンドウに添付される領域マネージャー・インスタンス持つことによって、 あなたは、XAMLコードから、領域を宣言的に登録することができます。 それは、シェルウィンドウと子Viewのスコープの中に存在するでしょう。
- ブートストラッパー・クラスで、InitializeShellメソッドを上書する。これメソッドでは、ユーザーに、シェルを表示します
C#
protected override void InitializeShell() { base.InitializeShell(); Application.Current.MainWindow = (Window)this.Shell; Application.Current.MainWindow.Show(); }
- ConfigureModuleCatalogメソッドを上書きします。
このテンプレート・メソッドでは、あなたは、モジュールとモジュール・カタログを埋め込みます。
モジュール・カタログ・インターフェイスは、Microsoft.Practices.Prism.Modularity.IModuleCatalogです。
そして、それには、アプリケーションのすべてのモジュールのためのメタデータが含まれています。
アプリケーションが、この時点でモジュールに含まれていないため、
ConfigureModuleCatalogメソッドの実装は、単純に、実装に基づいて呼び出し、そして、返す必要があります。
あなたは、メソッドを実装するために、Bootstrapperクラスで、次のコードを貼り付けることができます。
C#
protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); }
- モジュールの読み込みとモジュール・カタログについての詳細については、タスク2で説明します。:このトピックの後で、モジュールを追加します。
- 次のコードで示すように、ファイルApp.xaml.csを開き、
そして、アプリケーションのStartupイベントのための、
ハンドラ内のBootstrapperを初期化します。これを行うことによって、
アプリケーションの起動時に、ブートストラッパー・コードは、私たちが実行するでしょう。
C#
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); Bootstrapper bootstrapper = new Bootstrapper(); bootstrapper.Run(); } }
- App.xamlファイルを開き、そして、属性StartupUriを削除します。
あなたは、手動で、ブートストラッパーで、シェルウィンドウをインスタンス化するため、
この属性は、必要ありません。App.xamlファイルのコードは、次に示のようになります。
C#
<Application x:Class="HelloWorld.Desktop.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Application.Resources> </Application.Resources> </Application>
- 次の図に示すように、アプリケーションをビルドして、実行します。
あなたは、空のHello Worldウィンドウを、参照する必要があります。
Hello Worldウィンドウ
タスク 2:モジュールを追加する
Task 2: Adding a Module
このタスクで、あなたは、モジュールを作成し、そして、それをあなたのソリューションに加えます。 Prismのモジュールは、あなたのアプリケーションの論理ユニットです。 モジュールを、あなたのソリューションに加えることは、次のタスクに含まれています。:
- モジュールを作成する。このタスクで、あなたは、モジュール・クラスで、モジュール・プロジェクトを作成します。
- モジュールが、どのように、読み込まれるかを設定する。このタスクで、あなたは、モジュールを読み込むために、アプリケーションを設定します。
次の手順は、モジュールを、どのように、作成するべきか説明します。
モジュールを作成するために、
- あなたのソリューションに、新しいクラス・ライブラリ・プロジェクトを追加します。 これを実行するには、ソリューション・エクスプローラーで、HelloWorld.Desktopソリューション・ノードを右クリックし、 追加を指し、そして、新しいプロジェクトをクリックします。Project型リストで、Visual C#ノードのWindowsを選択します。 Templateボックスで、クラス・ライブラリをクリックします。 最後に、プロジェクトの名前を、HelloWorldModuleに設定し、 そして、OKをクリックします。次に示す図は、あなたのソリューションを示しています。
- 次のWPFのアセンブリに、あなたのモジュールの参照を追加します。
これを実行するには、ソリューション・エクスプローラーで、HelloWorldModuleプロジェクトを右クリックします。
そして、参照を追加をクリックします。参照の追加ダイアログボックスで、
Assembliesタブを選択し、続いて、次に示すアセンブリを選択し、そして、OKをクリックします。
- PresentationCore.dll
- PresentationFramework.dll
- WindowsBase.dll
- System.Xaml.dll
- 次のPrism Libraryアセンブリに、あなたのモジュールの参照を追加します。
これを実行するには、Solution Explorerで、HelloWorld.Desktopソリューションを右クリックします。
そして、その次に、SolutionのためのNuGetパッケージ管理をクリックします。
インストール済みパッケージ・ボタンをクリックします。次に示すアセンブリを選択し、そして、Manageをクリックします。:
- Prism
Selected Projectsダイアログで、HelloWorldModuleを選択し、 そして、OKをクリックします。最後に、「閉じる」をクリックすることで、NuGetパッケージ管理ウインドウを閉じます。
- Class1.csファイルの名前をHelloWorldModule.csに変更します。これを実行するには、Solution Explorerで、 ファイルを右クリックし、名前を変更をクリックし、新しい名前を入力して、続いて、Enterを押します。 確認ダイアログ・ボックスで、あなたが、クラスに、すべての参照の名前の変更したい場合、Yesをクリックします。
- ファイルHelloWorldModule.csを開き、
そして、ファイルの一番上に、次に示す、使用するステートメントを追加します。
あなたは、Prism Libraryで、提供されるモジュール型の要素を参照するために、それを使用するでしょう。
C#
using Microsoft.Practices.Prism.Modularity;
- 次のコードで示すように、IModuleインターフェイスを実装するために、クラス署名を変更します。
C#
public class HelloWorldModule : IModule { }
- HelloWorldModuleクラスでは、次のコードの示される、Initializeメソッドの空の定義を追加します。
C#
public void Initialize() { }
- HelloWorldModuleプロジェクトに、Viewフォルダを追加します。
このフォルダに、あなたは、Viewの実装を格納するでしょう。
これを実行するには、Solution Explorerで、HelloWorldModuleプロジェクトを右クリックし、
追加を指し、そして、新しいフォルダーをクリックします。フォルダ名をViewに変更します。
この手順は、あなたのプロジェクトを系統化するためにお勧めします。;
これは、モジュールに、いくつかの成果物が含まれているとき、役に立ちます。
以下は、あなたのモジュールに追加することができる、もう1つの共通フォルダです。:
- サービス。このフォルダで、あなたは、サービス実装とサービス・インターフェイスを格納します。
- ViewModels。このフォルダに、あなたは、View Modelを格納します。
次に示す図は、HelloWorldModuleモジュールに付随するソリューションを示しています。
ソリューションとHelloWorldModule
- ソリューションを構築します。
ここで重要な点は、あなたは、モジュールに付随するPrism Libraryに基づいたソリューションを持っています。 しかしながら、モジュールは、アプリケーションに読み込まれません。 次の項目では、モジュールの読み込みについて 、そして、あなたが、Prism Libraryでモジュールを、どのように、読み込むことができるかを説明します。
アプリケーションのライフ・サイクル・モジュール
モジュールは、アプリケーションの起動時に3つの工程を通過します。:
- モジュールは、モジュール・カタログで発見されます。 モジュール・カタログには、それらのモジュールについて、メタデータのコレクションが含まれています。 このメタデータは、モジュールマネージャー・サービスによって利用することができます。
- モジュール・マネージャー・サービスは、モジュールの初期化を調整します。 それは、モジュールの検索とその後の初期化を管理します。 それは、モジュールを読み込み-必要に応じて、それらを取得し-、それらを検証します。
最後に、モジュール・マネージャーは、モジュールをインスタンス化し、そして、モジュールのInitializeメソッドを呼び出します。
モジュール・カタログを埋め込む
Prism Libraryは、モジュール・カタログを埋め込む、いくつかの方法を提供します。 WPFでは、あなたは、コードから、XAMLファイルから、設定ファイルから、 あるいは、ディレクトリから、モジュール・カタログを埋め込むことができます。 次の手順は、HelloWorld.Desktopアプリケーションに、 HelloWorldModuleモジュールを読み込むコードからカタログを、どのように埋め込むかについて説明します。
コードから、HelloWorldモジュールに、モジュール・カタログを埋め込む。
あなたのシェル・プロジェクトで、モジュール・プロジェクトに、参照を追加します。Solution Explorerで、 これを行うために、HelloWorld.Desktopプロジェクトで右クリックし、そして、その次に、参照を追加をクリックします。 リファレンス・マネージャー・ダイアログボックスで、Solutionタブをクリックします。 HelloWorldModuleプロジェクトを選択し、そして、OKをクリックします。
- Bootstrapper.csファイルを開き、そして、ConfigureModuleCatalogメソッドを調べます。メソッドの実装は、次のコードで示されます。
protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); }
-
ModuleCatalogクラスは、コードから、アプリケーションのモジュールを定義するために、使用されます。 - それは、IModuleCatalogインターフェイスに含まれるメソッドを実装しています。 そして、手動でモジュールを登録するために、開発者のためのAddModuleメソッドを追加します。 それは、アプリケーションに、読み込まれなけれる必要があります。このメソッドの署名は、次のコードで示されます。
C#
public ModuleCatalog AddModule(Type moduleType, InitializationMode initializationMode, params string[] dependsOn)
AddModuleメソッドは、同じモジュール・カタログ・インスタンスを返します。 そして、次のパラメータを取得します。:
モジュールのモジュール初期化子クラスの型が、読み込まれます。 この型は、IModuleインターフェイスを実装する必要があります。
初期化モード。このパラメータは、モジュールが、どのように初期化されるかについて示しています。 可能な値は、InitializationMode.WhenAvailableとInitializationMode.OnDemandです。 もし、あれば、モジュールに依存している配列には、モジュールの名前が含まれています。それが読み込まれるとき、 あなたのモジュールの依存関係が、利用できる、これらのモジュールは、あなたのモジュールを確認するの前に、読み込まれます。
モジュール・カタログ・インスタンスに、HelloWorldModuleモジュールを登録するために、 ConfigureModuleCatalogメソッドを更新します。これを実行するには、 あなたは、ConfigureModuleCatalog実装を、次のコードに置き換えることができます。
C#
protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog; moduleCatalog.AddModule(typeof(HelloWorldModule.HelloWorldModule)); }
備考
この例では、モジュールは、シェルで参照されるディレクトリです。 それは、この例が、モジュールをカタログに追加するために、typeof(Module)使用できる理由です。 しかし、そのモジュールに注意してください。 また、すでに、利用できない、その型は、カタログに追加されています。 WhenAvailable初期化モードは、初期化モードが、指定されていない場合、既定の値です。
ソリューションをビルドして、実行します。 HelloWorldModuleモジュールが、初期化されていることを確認するには、 HelloWorldModuleクラスのInitializeメソッドに、ブレークポイントを追加します。 ブレークポイントは、アプリケーションが開始するとき、衝突する必要があります。
タスク 3:ビューを追加する
このタスクで、あなたは、ViewをHelloWorldModuleモジュールに作成し、 そして、追加します。Viewは、外観の内容が含まれているオブジェクトです。 Viewは、多くの場合、ユーザー・コントロールですが、それらは、ユーザー・コントロールである必要はありません。 次のタスクに関係するあなたのモジュールに、Viewを追加します。:
- Viewを作成する。このタスクで、あなたは、外観の内容を作成することで、Viewを実装します。 そして、View内で、UI要素を管理するために、コードを記述します。
- 領域で、Viewを表示します。このタスクで、あなたは、領域に参照を取得し、そして、Viewを追加します。
次の手順は、Viewを、どのように、作成するべきか説明します。
Viewを作成するために、
- あなたのモジュールに、新しいWPFのユーザー・コントロールを追加します。 これを実行するには、Solution Explorerで、Viewフォルダを右クリックし、追加を指し、そして、新しい項目をクリックします。 新しい項目の追加ダイアログボックスで、ユーザー・コントロール(WPF)テンプレートを選択し、 名前を、HelloWorldView.xamlに設定し、そして、追加をクリックします。
- Viewに、Hello Worldテキストブロックを追加します。
これを実行するには、あなたは、ファイルHelloWorldView.xaml内の次のコードで、あなたのコードを置き換えることができます。
XAML
<UserControl x:Class="HelloWorldModule.Views.HelloWorldView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <TextBlock Text="Hello World" Foreground="Green" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" FontWeight="Bold"></TextBlock> </Grid> </UserControl>
- ファイルを保存します。
備考
このhands-on labを簡単に維持するには、 次のModel-View-ViewModel(MVVM)パターンで、どのように、Viewを作成するかの、 手順は、説明されていません。MVVMパターンの詳細については、MVVMパターンを実装するを参照してください。
領域マネージャー
Region Manager
領域マネージャー・サービスは、領域のコレクションを保持するための役割を果たします。 そして、コントロールのために、新しい領域を作成します。 このサービスは、Microsoft.Practices.Prism.Regions.IRegionManagerインターフェイスを実装しています。 一般的に、あなたは、それらの名前を通して分離された方法で、領域を配置するために、直接、このサービスと相互作用します。 そして、それらの領域に、Viewを追加します。既定では、UnityBootstrapper基底クラスは、このサービスのインスタンスをアプリケーション・コンテナで登録します。 これは、あなたが、依存関係の注入を使用して、HelloWorldアプリケーション内の領域マネージャー・サービスに、参照を取得できることを示しています。
次の手順は、領域マネージャーのインスタンスを、どのように、取得するかを説明します。 そして、シェルの中心となる領域に、HelloWorldView Viewを追加します。
シェルのViewを表示するために、
- HelloWorldModule.csファイルを開きます。
- ファイルの先頭に、次のusingステートメントを追加します。
あなたは、Prism Libraryで領域要素を参照するために、それを使用するでしょう。
C#
using Microsoft.Practices.Prism.Regions;
- 領域マネージャーへの参照を格納するために、公開されない読取専用インスタンス変数を作成します。
これを実行するには、クラス・ボディの中に、次のコードを貼り付けます。
C#
private readonly IRegionManager regionManager;
- コンストラクタの依存関係注入を通じて、領域マネージャー・インスタンスを取得するために、
HelloWorldModuleクラスのコンストラクタを追加します。
そして、それをregionManagerインスタンス変数に格納します。これを実行するには、コンストラクタは、
型Microsoft.Practices.Prism.Regions.IRegionManagerのパラメータを取得する必要があります。
あなたは、コンストラクタを実装するために、クラス・ボディの中に、次のコードを貼り付けることができます。
C#
public HelloWorldModule(IRegionManager regionManager) { this.regionManager = regionManager; }
- Initializeメソッドでは、RegionManagerインスタンスで、RegisterViewWithRegionメソッドを呼び出します。
このメソッドは、領域Viewレジストリ内に、その関連するビュー型で、領域の名前を登録します。;
レジストリは、これらのマッピングを登録、そして、取得するための役割を果たします。
RegisterViewWithRegionメソッドは、2つのオーバーロードを持っています。:
あなたが、直接、Viewを登録したいとき、あなたは、領域の名前とViewの型の2つのパラメータを必要とする、
最初のオーバーロードを使用します。これは、次のコードで、示されています。
C#
public void Initialize() { regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView)); }
- 前述のコードで使用されるUI構成アプローチは、View発見として知られています。 この方法を使用するとき、あなたは、Viewと、Viewが読み込まれる領域を指定します。 領域が作成されるとき、それは、その関連するViewを要求し、自動的に、それを読み込みます。
備考
領域の名前は、領域のRegionName属性で定義される名前と一致する必要があります。
アプリケーションをビルドして、実行します。あなたは、次の図に示すように、「Hello World」メッセージとHello Worldウィンドウを見る必要があります。
詳細情報
More Information
Prismに含まれる、コード・サンプルについて学ぶためには、次のトピックを参照してください。:
Prism 5.0 for WPFのHello Worldを実行する(改修版)
Prizmを使用して、Prism 5.0 for WPF パッケージに入っているQS-Hello World QuickStartのドキュメントを参考に「Hello World」を実行するプログラムを作成しました。