原文
「What's New in Prism Library 5.0 for WPF」(外部サイト)の和訳です。
Prism 5.0には、いくつかの新しい分野の手引き、WPFのためのPrismライブラリの新しいコードの結果、 新しく、そして、更新されたクイックスタート、そして、更新されたドキュメンテーションが含まれています。 Prismライブラリの一部は、Prism 4.1と新しい手引きがサポートする、Prism 5.0の間で変更されました。 既存の問題を修正し、コミュニティの要求に対応します。
備考
.NET 4.0、SilverlightやWindows Phone 7.xアプリケーションのためには、Prism 4.1 (原文リンク)を使用します。
新しい手引き
New Guidance
Prism 5.0には、以下の通り、新しい手引きのいくつかの領域が含まれています。:
- Prism.Mvvmは、PrismのMVVMサポートをカプセル化する、移動可能なクラス・ライブラリです。このライブラリには、 ViewModelLocationProviderが含まれています。ViewとView modelは、「MVVMパターンを実装する」(原文リンク)際に説明されるように、 新しいViewModelLocationProviderの規則に基づいたアプローチを使用して、互いに接続することができます。 View Modelの構造は、依存関係注入コンテナを使用して完成することができます。ViewModelロケーターの拡張ポイントは、「Prismライブラリを拡張する」(原文リンク)で説明されます。DelegateCommandsは現在、拡張可能で、非同期サポートを提供します。 INotifyPropertyChangedインターフェースの新しい実装は、BindabaleBaseクラスが追加されました。
- 呼び出されるインタラクションの要求に応じて、ユーザー定義したウィンドウを開くために、PopupWindowActionクラスは、 Prism.Interactivityアセンブリを追加しました。InvokeCommandAction動作は、 今、関連するコマンドにトリガのパラメータを渡すPrismによって、提供されます。より詳細な情報は、 「高度なMVVMの筋書き」(原文リンク)を参照してください。
- EventAggregatorクラスは、Prism.PubSubEvents portableクラス・ライブラリに、移動されました。
- NavigationParametersクラスは、今、ナビゲーションの間、 RegionやRegionManagerインスタンスのRequestNavigateメソッドのオーバーロードを使用して、 オブジェクト・パラメータを渡すために使用することができます。
Prismライブラリの変更
Changes in the Prism Library
Prismライブラリ5.0は、新しい機能、コードの構成とAPIに関係した変更が含まれています。
コードの構成
Changes in the Prism Library
次の組織的な変更が、ライブラリに行われました。:
- Microsoft.Practices.Prism.PubSubEventsポータブルクラスライブラリには、PubSubEvents、EventAggregator、 と関連したクラスが含まれています。
- Microsoft.Practices.Prism.Mvvmポータブル・クラス・ライブラリには、ViewModelLocationProvider、BindableBase、 ErrorsContainer、PropertySupport、CompositeCommand、DelegateCommand、DelegateCommandBase、 とWeakEventHandlerManagerが含まれています。
- Microsoft.Practices.Prism.Mvvm.Desktopアセンブリには、WPFのViewModelLocator添付プロパティが含まれています。
- EventAggregatorクラスは、Prismアセンブリでは、廃止されたと記録されています。
- PrismライブラリのSilverlightと電話バージョンは、取り除かれました。あなたが、これらのライブラリが必要な場合、 NuGetからPrism 4.1アセンブリをダウンロードします。
- PrismとPrism.Mvvmは、互いに独立していますが、IActiveAwareを共有しています。 その結果、IActiveAwareは、Prism.SharedInterfacesに移動されました。
Prismのバージョン5.0では、Pub Subイベント機能は、個別アセンブリ(Prism.PubSubEvents)に移動されました。 DelegateCommand、CompositeCommandとViewModelサポートは、他のアセンブリ(Prism.Mvvm)に移動しました。 PubSubEventsとMvvmを中心的なPrismアセンブリから切り離すことは、多くの利点があります。
- あなたは、あなたが必要とする機能だけを選択することができます。あなたが、RegionsとModularityを望む場合、 あなたは、中心的なPrismアセンブリを使用します。ViewModelと命令サポートだけを望む場合、あなたは、Prism.Mvvmを使用します。 あなたが、Pub Subイベントだけが必要な場合、あなたは、Prism.PubSubEventsを使用します。 各々のアセンブリは、より小さく、より簡単に理解できます。
- あなたは、今、ポータブル・クラス・ライブラリで、ViewModelコードをビルドすることができます。 それは、両方ともPCLであるため、それはPrism.Mvvm、そして、あるいは、Prism.PubSubEventsにテコ入れします。 あなたのViewModelコードをPCLに入れることによって、あなたのViewModelコードは、依存したライブラリを使用することが制約されます。 それは、プラットホームを選びません。そして、このように複数のプラットホームを対象にすることができます。
- これらの、より小さなライブラリへの更新は、もっと容易で迅速に作成できるようになります。
APIの変更
API Changes
PrismライブラリAPIは、複数の重要な領域で変更されました。ブートストラッパーは、かなり修正されました。 そして、Prismで提供される新しい分野をサポートする手引きのために、再利用可能なコードが、追加されました。
MVVMとイベント・アグリゲーターの変更
MVVM and Event Aggregator Changes
- ViewModelとEventAggregatorが、PCLに移動することは、Prismライブラリにいくつかの変更をもたらします。 これらの変更には、次のものが含まれています。:
- Prism.MvvmのBindableBaseクラスは、NotifcationObjectの代わりに使用する必要があります。 NotificationObjectとPropertySupportクラスは、Prismアセンブリでは、廃止されたと記録されています。
- BindableBaseクラスから継承するとき、プロパティの支援分野を更新するために、SetPropertyメソッドを使用します。 そして、対応するプロパティの変更イベントを発生させます。 新しいOnPropertyChangedメソッドは、追加されたパラメータとしてラムダ式を取ります。
- CompositePresentationEventsの代わりに、 Microsoft.Practices.PubSubEventsポータブル・クラス・ライブラリのPubSubEventsクラスを使用します。 Prismアセンブリ内のEvents solutionフォルダのクラスは、廃止されたと記録されています。
- UriQueryクラスは、NavigationParametersに名前が変更されました。 それは、以前と同じ機能性を保有しています。そして、オブジェクト・パラメータを渡すための、サポートが追加されています。
- DelegateCommandには、非同期ハンドラのためのサポートが含まれています。 そして、Prism.Mvvmポータブル・クラス・ライブラリに、移動しています。DelegateCommandとCompositeCommandの両方は、 CanExecuteChangedイベントを発生させるために、WeakEventHandlerManagerを使用します。 WeakEventHandlerManagerは、UIスレッドのSynchronizationContextに適切に参照を得るために、 最初に、UIスレッド上に、構築する必要があります。
- EventAggregatorは、現在、UIスレッド上のSynchronizationContextに、適切な参照を得るために、 最初に、UIスレッド上に、構築する必要があります。
- WeakEventHandlerManagerは、現在、publicです。
- DelegateCommand上のExecuteとCanExecuteメソッドは、現在、仮想として記録されています。
Prism Library Core APIへの追加
Additions to the Prism Library Core API
次の名前空間は、Prism 5.0で追加される手引きの新しい領域をサポートするために、Prismライブラリに追加されます。:
- Microsoft.Practices.Prism.PubSubEventsは、ポータブル・クラス・ライブラリを使用して、 あなたが、疎く結合したメッセージを送信することを助けるために、追加されました。
- Microsoft.Practices.Prism.Mvvmは、ポータブル・クラス・ライブラリと複数のプラットホームの特定のライブラリを使用して、 MVVMを実装する際に、あなたを支援するために、追加されました。
- Microsoft.Practices.Prism.SharedInterfacesは、PrismとPrism.Mvvmアセンブリの間で、 IActiveAwareインターフェースを共有するために、追加されました。 その結果、IActiveAwareインターフェースは、このアセンブリに移動されました。 また、それは、将来、使用使用する事を意図しています。
解決されたCodePlexの問題
CodePlex Issues Resolved
8532:
InteractionRequestTriggerは、いくつかの実装でメモリリークが発生する可能性があります。
9153:
『Notification』は、本当は、インターフェイスにする必要があります。
9438:
既存のビューへのナビゲーション。
5495:
コマンドへのイベント。
8101:
DelegateCommandは、拡張できません。
5623:
WeakEventHandlerManagerをpublicにします。
9906:
WPFで、XAMLモジュール・カタログを使用するときのバグ。
7215:
MEFブートストラッパーとWPFアプリケーションのためのModuleCatalog.CreateFromXamlによる問題。
8703:
RegionManager:IsInDesignMode。
4349:
既定のリージョンの動作順序の問題。
3552:
V2の領域マネージャーは、非WPFアプリケーションを認識することができません。
サンプルコードの変更
Example Code Changes
Prism 5.0には、11の別々のコード・サンプルが含まれています。その説明は、提供された手引きの一部です。 Prism 4.1からのいくつかのサンプルは、削除、あるいは、置き換えられました。そして、新しいサンプルが追加されました。
次のサンプルは、Prism 5.0のために、追加されました。:
- 基本的なMVVMのクイックスタート
このクイックスタートは、ViewModelロケーターを使用する、極めて単純なMVVMアプリケーションを示します。 そして、親と子のViewModelsを示します。詳細は、MVVMクイックスタートを参照してください。
- MVVMクイックスタート
このクイックスタートは、このバージョンのために、削除されました。MVVMの参考になる実装。 この参考になる実装は、このバージョンのために、削除されました。
- 表示を切り替えるナビゲーションのクイックスタート
このクイックスタートは、現在、WPFをサポートしています。 それは、Prismの地域ナビゲーションAPIを、どのように使用するかを説明しています。 詳細は、「表示を切り替えるナビゲーションのクイックスタート」を参照してください。
- 状態に基づいたナビゲーションのクイックスタート
このクイックスタートは、現在、WPFをサポートしています。 それは、Views(状態)と許可された移行を定義するために、Visual State Managerを使用する方法を示します。 詳細は、「状態に基づいたナビゲーションのクイックスタート」を参照してください。
- UI構成のクイックスタート
このクイックスタートは、現在、WPFをサポートしています。 それは、Prism 2.0のビュー発見クイックスタートから、ビュー注入クイックスタートに置き換えられました。 現行版では、両方の概念は、1つの見本のアプリケーションに示されています。詳細は、「UI構成のクイックスタート」を参照してください。
- インタラクティブ性のクイックスタート
この新しいクイックスタートは、どのように、対話の要求をView Modelを通してViewに公開するかを説明します。 相互作用は、ポップアップ、確認、ユーザー定義したポップアップと更に複雑な場合では、ポップアップは、ユーザー定義したView Modelが必要な場所でできます。 それは、同様に、コマンド・パラメータとして、 トリガからEventArgsを渡す、PrismのInvokeCommandAction動作を示します。 詳細については、「インタラクティブ性のクイックスタート」を参照してください。
NuGetパッケージ、今すぐご利用いただけます!
NuGet Packages Now Available
あなたのアプリケーションでは、あなたは、今、Prismアセンブリに参照を追加するために、 NuGetを使用することができます。これらのパッケージに、含まれています。:
- Prism(外部サイト)
- Prism.Composition(外部サイト)
- Prism.Interactivity(外部サイト)
- Prism.Mvvm(外部サイト)
- Prism.PubSubEvents(外部サイト)
- Prism.UnityExtensions(外部サイト)
- Prism.MEFExtensions(外部サイト)
備考
PrismのNuGetパッケージは、Prism.Composition、Prism.Interactivity、 Prism.MvvmとPrism.PubSubEventsパッケージをダウンロードするでしょう。 あなたが、より精細なものを必要とする場合、あなたは、ただ、Prism.Interactivity、 Prism.MvvmとPrism.PubSubEventsに参照を追加する必要があります。
詳細情報
Prismライブラリのソリューションをバージョン4.1からバージョン5.0に、どのように、更新するかの詳細については、 「Prismライブラリ4.1からのアップグレード」を参照してください。