Home > C# > Toolkit > UIパターン > Prism > ドキュメント

Prism Library 5.0 for WPFの新機能

新規作成日
最終更新日

原文

「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のNuGetパッケージは、Prism.Composition、Prism.Interactivity、 Prism.MvvmとPrism.PubSubEventsパッケージをダウンロードするでしょう。 あなたが、より精細なものを必要とする場合、あなたは、ただ、Prism.Interactivity、 Prism.MvvmとPrism.PubSubEventsに参照を追加する必要があります。

詳細情報

Prismライブラリのソリューションをバージョン4.1からバージョン5.0に、どのように、更新するかの詳細については、 「Prismライブラリ4.1からのアップグレード」を参照してください。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」