プリズムソースコードの解釈とリージョン1-ブートストラップの作成

入門

Prismはまた、前に学んだが、フレームワークのない深い理解がなかった、プロジェクトが今のプログラムにWinフォームWPFデスクトップアプリケーションを変換しようとしている、と私はプログラムが良いアーキテクチャを維持するためにテストすることにしたい、これらの設計のプリズムは、私に合います私は、ソースコードも触発された参照の為替を議論することを歓迎した後、緩やかに結合され、メンテナンス性、テスト可能なアプリケーション・フレームワークを構築するため、主にWPFとXamarinのために、求められています。

始めます

私は、各機能の導入を達成する方法で参照するには、サンプルの正式オーダーから始めましょう。

0、PrismApplicationBase

まず、このクラスは、すべてのプリズムの機能と全体的な枠組みを構築し、起動している、このクラスについて教えてください。このクラスのメソッドのほとんどは、仮想メソッドは、いくつかのカスタマイズされた機能を追加するためにオーバーライドすることができます、Prismはまた、我々がそのように設計されていることを願っています。

プリズムを通して、UnityContainerはどこにも、もはや、それは必要なときに、大きなコンテナは、リゾルバをすべてのクラスを保持しています。

1585470691950

二つのフィールド、UnityContainer上ContainerExtension、記事ではもちろん、あなたができるまた、カスタマイズ他の容器があり、また、公式の説明を与えるコンテナのデフォルトUnityContainerコンテナであります

ModuleCatalogは、モジュールをロードする方法の定義であるモジュールは大きな利点プリズムであり、公式の説明を与える、意図は千の言葉の価値があります

すべてはこのクラスのプリズムのすべての機能を搭載した、クラスからPrismApplicationBaseを始めています。

1585471475741

最も重要な方法を見て、それがその主な仕事適当な容器に注入し、インフラストラクチャモジュール、RequireTypes、RegionAdapterMappings、RegionBehaviorsにあるこのプロセスでの機能のほとんどを完了しました。

ここで感じるには、いくつかの方法があります

1585471851178

1585471862192

1585471872010

1585471899983

1585471908276

サブクラスでPrismApplicationBase上で検索します

1585472041462

私が先に言ったように、書き換え方法、最初の呼び出しBase.Method、その後は独自の機能を追加します

ただ、開発者のための2つの方法が書き換えられます

1585472248282

メインフォームとRegisterTypesメソッドを作成し、我々はビルドに必要ないくつかの基礎を追加することができます第二の方法は、実際にはContainerRegistryはユニティコンテナを登録しました

1585472365902

楽しいことの例で見てみましょう。29の合計例であるプリズム試料-WPFマスター、https://github.com/PrismLibrary/Prism-Samples-Wpf

1、BootstrapperShell

1585472950515

1585472994216

見てみると、メインフォームを作成するには、コンテナを通じて、瞬間のためにファイル名を指定して実行をBootstraperを作成するビットを表示することです。

実際には、記事は、ブートストラップであるか、を見てください

1585473149592

これら2つのクラスを参照してくださいすることが突然実現の感覚ではない、オリジナルのブートストラップは何ですか?PrismApplicationBase方法はこの瞬間を再実装し、アプリケーションのすべてから抽出することで、これはシングル責任原則のですか?

ファイル名を指定して実行を見て、これらの方法はそれにあまりにも精通しています。

1585473531825

、そこを使用する方法をログに記録し、その後、もちろん、記録を作成することで、すべての情報は様々な方法を作成するためのリソースに入れて、新しい最も簡単なものを選びます

1585473705313

2、地域

これは、リージョンを作成するだけです

1585473969090

一目ああ、作成RegionManager ContentControlに依存関係プロパティを使用している地域。

あなたはRegionManagerを見て古典的な3つの問題、で、あなたはどこへ行く、から来ます。

1585474161899

ああ!あなたは、ああ、非常に強力な横柄な若い男です。その上でチェックを見てください。

ルックRegionNameは、プロパティがコールを変更した場合、依存関係プロパティが存在しているはず

1585474975966

IsInDesignModeは、コール、VSモードの設計かどうかを決定することです

1585475107593

ああ、または遅延読み込みを使用するか、またはコンテナが作成され、プリズムのほぼすべてのクラスは、コンテナによって作成されます

1585475296411

行動?行動のWPFの内部は、あなたがそれディスク必要なときに、脇に依存関係プロパティを入れているサービスああ、です。行って見て

1585475415828

非常に標準サービス。

1585475467136

弱参照の使用、素晴らしいデザインは、あまりにも、それについて考えます、

1585475585421

1585475621940

インターフェイスは、Loadイベントによってロードされたときに遅延読み込みを実装し、ああ、素晴らしい、リージョンが作成されました。

1585475679204

1585475701564

ロードは一度だけトリガ。私は、無線化を巻き、WireUp言葉を言っています

1585475877997

1585476017158

その後、初期化アダプターによって作成された検索RegionAdapterをRegionAdapterMappingに、名前で作成されました。

1585476694306

RegionAdapterMappingはRegionAdapterのコレクションです

1585476749370

1585478744531

1585476852940

リージョンを作成し、動作を追加

1585477085692

1585476992679

行動は何ですか?

1585477032237

リージョンを作成すると、それを完了しました。

地域の公式ドキュメントを見てください

3、CustomRegions

あなたはREGINをカスタマイズしたい、それは確かにRegionAdapter、カスタムを作成することになりますStackPanelRegionAdapter

1585477844435

1585477898475

1585477950980

ただ、これらを理解するためのソースコードを読み取ることによって、それが難しいようではありません。

概要

Bootstapper、RegionAdapterを作成し、カスタマイズする方法のリージョンの下でソースコードを探索することで、優しくベールにプリズムを少し持ち上げました。機能やアイデアの多くは、私はあなたを歓迎し、学習を探るために、あります。

おすすめ

転載: www.cnblogs.com/lovexinyi/p/12593960.html