ホーム > コンピュータ > C# > WPF in C# > Prism

ベクトルドロー・レベルゼロ+

Prism Library 5.0 for WPFの新機能[C# WPF Prism]

新規作成日
最終更新日

概要

MVVMパターン調べていて、Prismというツールキットを見つけました。MVVMパターンを使用するためのもっとも人気のあるツールキットのようです。

原文

「What's New in Prism Library 5.0 for WPF」(外部サイト)の和訳です。

訳文

What's New in Prism Library 5.0 for WPF(外部サイト)

パターンと実践 ディベロパー・センター

Microsoft 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からのアップグレード」(原文リンク)を参照してください。

Copyright (C) 2011-2016 kukekko All Rights Reserved.
kukekko@gmail.com
ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
inserted by FC2 system