問題タブ [prism-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
441 参照

wpf - WPF PRISM 5.0 & Unity IoC: 依存性注入をサポートする PopUpWindow を使用して再利用可能なビューを実装しようとしています

これは StackOverflow に関する私の最初の投稿です。完全に明確でない場合はご容赦ください。

私の WPF プロジェクトでは、PRISM 5.0 と Unity をコンテナーとして使用しています。これは、PRISM と Unity を使用した最初のプロジェクトです。

私のアプリケーションでは、View を MainWindow に正しくロードしています。このビューには、アイテムに関するわかりやすいバージョンの情報が表示されます。この画面には編集ボタンがあり、この項目を編集するための適切なコントロールを備えたモーダル ウィンドウを呼び出したいと考えています。これまでのところ、InteractionRequestTrigger -> PopUpWindowAction アプローチを選択しました。これは、結果を達成するための最も単純なアプローチであったためです。私はこのアプローチと結婚していません。

ただし、モーダルで使用しようとしている View の ViewModel コンストラクターで依存性注入を機能させることができないことに気付きました。これはおそらく、View を Region に登録していないか、関連する脚の作業を行っておらず、PopUpWindowAction がユーザー コントロールを単純なフォームに配置しているためです。

私の質問は、カスタム View と ViewModel を渡すモーダル ダイアログを実現し、それを呼び出す親 View と ViewModel として動作させることはできますか? つまり、依存性注入などをサポートしています。編集ロジックを実行した後、アイテムの追加機能にビューとビューモデルを理想的に再利用したいのですが、そのビューをシェルの「メインリージョン」に登録することを考えているので、そこでも依存性注入を使用します。

うまくいけば、これは明らかです。ここでコード例が実際に役立つとは思いませんでしたが、もしそうなら、私に知らせてください。上記を説明する簡単な例をまとめることができます.

0 投票する
2 に答える
1251 参照

c# - ポップアップで IOC コンテナーを取得する

WPF アプリケーションで PRISM 5 を使用しています。また、アプリケーションのシェル ビューには 2 つの領域があり、A と B と考えてください。領域 A には POPUP が含まれています (PRISM 5 対話機能を使用してポップアップを表示します)。

ビューのコンストラクター内にポップアップビューモデルのインスタンスを作成すると、アプリケーションが機能します。

作業コード

しかし、依存性注入を使用してビュー モデル インスタンスを作成しようとする InitializeComponent();と、親ビュー (ビュー A) でアプリケーションが失敗します。

DI 動作しないコード

モジュール/ブートストラップでのモデル登録の表示

エラーが発生

NULL参照例外が発生しました

スタックトレース(質問のために編集)

AViewModel (プロジェクト固有の情報を避けるために編集されたもの)

0 投票する
1 に答える
114 参照

wpf - プリズムを使用してインターフェイスの実装を共有するには?

MSDN によると、メソッドを使用してオブジェクトの既存のインスタンスを登録した場合、RegisterInstanceResolve または ResolveAll へのすべての呼び出しに対して、または依存関係メカニズムによってインスタンスが他のクラスに挿入されるときに、コンテナーは同じインスタンスを返します。

dataServiceレイヤー用のプロジェクトを作成して使用しました

IQuoteSource必要なときはいつでも、アプリケーションの存続期間中にインスタンスが 1 つだけ作成されることを期待しています。しかし、コンストラクターでインターフェイスを使用すると、別のプロジェクト アセンブリで別のものIBQuoteSourceが作成されます (コンストラクターがIBQuoteSource再度呼び出されることがわかります) では、アプリケーション全体でインターフェイスの 1 つの実装を共有する方法は?

0 投票する
1 に答える
538 参照

architecture - Prism モジュールと複数の DI コンテナ

私たちのアプリケーションにはいくつかのウィンドウがあります。現在、それらは別々のプロセスで実行されていますが、それによりそれらの間の通信が厄介になります (そして、JMS 接続などのリソースが増加します)。アイデアは、通信とリソース/サービスの共有を容易にするために、単一プロセスに向けて構造をリファクタリングすることでした。

私はこのようにプリズムモジュールを使用することについて考えました:

プリズムモジュール

アイデアは、各ウィンドウの「メイン プログラム」をプリズム モジュールとしてロードし、各モジュールが適切と思われる独自の DI コンテナーを初期化できるようにすることでした (各ウィンドウは異なるチームによって作成されます)。モジュールは、他の UI に貢献することはありませんが、メイン MEF コンテナーを介してサービスを共有する場合があります。Main は、モジュールで利用できるいくつかの一般的なサービスをロードすることもできます。

各モジュールを独自の DI コンテナーに分離することで、モジュール間の依存地獄を回避し、別のモジュールからのサービスのより規律ある使用を奨励しようとしています。

  1. これは可能ですか、それとも DI コンテナーが互いに衝突しますか (同じプロセス内にありますか)?
  2. Prism には、この種のソリューションと戦うものはありますか?
  3. プリズム IModule の代わりに独自のミニモジュールシステムを作成する必要がありますか?

私たちが調査してきた別の可能性は、各モジュールを独自の AppDomain に配置することです。ただし、それには独自の欠点があります (共有サービスは wcf を介して行う必要があるなど)。ただし、個別の AppDomain を使用すると、DI コンテナーの衝突の可能性が回避され、AppDomain に障害が発生した場合にメインがウォッチドッグとして機能することができます。AppDomain ベースのソリューションの経験がある人はいますか? ここに記載されていない問題はありますか?

0 投票する
1 に答える
112 参照

c# - EF6 の遅延読み込みで、POCO 内のエンティティの関連リストが入力されない

既存のデータベースへのコード ファースト アプローチを使用しています。私たちのアプリケーションでは、ORM は EF6 であり、PRISM 5.0 も使用しています。RequestNavigate メソッドを使用してオブジェクトをパラメーターとして他のビュー モデルに渡すと、問題が発生します。

私たちの目的:

渡された OnNavigatedTo メソッドで Pracownicy のオブジェクトを受け取ります。

この ViewModel では、関連する KartyRCP エンティティ (KartyRCP (Worker.KartyRCP) との 1 対多の関係) を照会する Pracownicy POCO [NotMapped] プロパティを参照します。

Pracownicy の最初のインスタンスを表示すると、結果は予想どおりです。KartyRCP の 1 つが選択されています。しかし、Pracownicy の別のインスタンスを表示しようとすると、AktualnaKartaRCP プロパティは null を返します。これは、データベースに存在するにもかかわらず、KartyRCP にデータが入力されておらず、アイテムが含まれていないためです。同じインスタンス Pracownicy を再度開こうとすると、KartyRCP が読み込まれるのはさらに奇妙です。

POCO クラス内からクエリを実行するときに、遅延読み込みが関連するエンティティに入力されない理由はわかりません。

最初に、KartyRCP にデータを入力するビュー モデルからリストを要求するという 2 つの回避策を見つけましたvar WorkAroundGetList = Worker.KartyRCP;。他の回避策は、include ステートメントを使用して、Pracownicy で熱心にロードされるテーブルをインクルードすることです。.Include(z => z.KartyRCP)

しかし、私たちはそのような解決策に満足していません。事前に助けてくれてありがとう。

0 投票する
1 に答える
423 参照

c# - ObservableCollection はそのコレクションを失います

Prism と Unity で WPF を使用する -

ObservableCollection がそのコレクションを失うという奇妙な欠陥があります。

自動プロパティで何かおかしなことが起こっているかどうかを確認するために、実際のバッキング フィールドを追加しました。

フィールドに CollectionChanged イベント ハンドラーを追加しました。これは、予期したときにのみ発生します。

サービス ロケータを使用してインスタンスを取得しているので、別のインスタンスを取得しているのではないかと考えましたが、他のプロパティとフィールドには以前のアクセスからの期待値が含まれています。

ViewModel の保存 -

それを取得する -

ObservableCollection フィールド -

ObservableCollection プロパティ -

ObservableCollection フィールド イベント ハンドラ -

0 投票する
1 に答える
274 参照

c# - カスタム ユーザー コントロールを RegionContext のプロパティにバインドする

小さな HR アプリケーションを作成することで、Prism (ver. 5) フレームワークを学習しています。

私の EmployeeSummaryView は、タイプ Person のプロパティをより適切に整理するためにタブ コントロールを使用する単純なマスター詳細ページです。このタブ コントロールには、CurrentEmployee への Context Binding 領域があります。

私が苦労しているのは、[連絡先情報] タブです。ここでは、カスタム ユーザー コントロールを使用して郵送先住所を編集します。バインディングを確立するための私の最初の本能は、次のことです。

しかし、Prism と MVVM について学べば学ぶほど、この匂いがし始めます。

カスタム コントロールを RegionContext のプロパティにバインドする適切な方法は何ですか?

0 投票する
0 に答える
206 参照

wpf - Prism5 wpf View-Switching Navigation QuickStart デモが実行されない

私は PRISM を初めて使用し、クイックスタート デモをダウンロードし、View Switching Navigation を試しました。ソリューションを構築できました。エラーはありませんが、アプリケーションを実行しようとすると、CalendarModule.dll を読み込めないというエラーが発生します。

タイプ 'Microsoft.Practices.Prism.Modularity.ModuleTypeLoadingException' の未処理の例外が Microsoft.Practices.Prism.Composition.dll で発生しました

追加情報: モジュール CalendarModule の型を読み込めませんでした。

エラー: ファイルまたはアセンブリ 'ViewSwitchingNavigation.Calendar.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたパスが見つかりません。

bootstrapper.run() でこのエラーが発生しました

ヒントをありがとう!

0 投票する
1 に答える
576 参照

c# - TreeView と Prism-5 の問題点

Prism と MVVM を使用して TreeView を構築しようとすると、かなりの問題が発生します。アプリケーションをリージョンに分割しています。このリージョンの 1 つには TreeView を含むモジュールがあり、別のリージョンには、ある種のプロジェクトを作成および構成できるモジュールとしてリボンがあります。これらの領域はプリズムを使用して伝達され、完全に機能します。そのため、プロジェクトが「リボン モジュール」で作成されると、「TreeView モジュール」がそれを取得し、ここで問題が発生します。

「TreeView モジュール」の ViewModel には、すべてのプロジェクトを追加する必要がある ObservableCollection があります。プロジェクトの名前とこのクラスのその他のプロパティは、TreeView に表示されます。

これがDataSetとは

これは TreeViewViewModel です

そして、ここでビューのコード

これにより、TreeView でプロジェクトの名前を取得できますが、たとえば、ここに私の質問があります。

1.- 各 DataSet の名前を持つ TreeNode の 2 番目の階層を取得するにはどうすればよいですか?

2.- TreeView でイベントを管理するにはどうすればよいですか?

事前にどうもありがとうございました。