0

オブジェクトViewModelsから派生したものがいくつかあり、 from から派生しました。ScreenShellViewModelConductor<T>.Collection.OneActive

次のような新しいActivateItemリクエストを行う場合:

ActivateItem(new AViewModel());

関連付けられたビューが myContentControlでアクティブになります。その後、別のリクエストを行う場合:

ActivateItem(new BViewModel());

AViewModelありますがdeactivated、閉じた状態でもあります。BViewModelactiveAViewModel

が閉じられないようにするために、ViewModel既にインスタンス化されたインスタンスをActivateItemメソッドに渡すことにしました。これは私が望むように動作するようです。

ViewModel私の質問は、既に作成された s をどのように追跡するかです。常に新しいインスタンスを作成したいわけではありません。この理由は、ユーザーが別の場所に移動して戻ってきView\ViewModelた場合でも、の状態を維持したいからです。Viewでそれらを維持するか、CollectionShellViewModelを使用するItems CollectionことができますConductor

どちらかが正しい場合、または私の問題に対するより良い解決策がある場合、これらのうちどれが正しいですか?

4

2 に答える 2

0

それが正しいアプローチであるかどうかは必ずしも言えませんが、ViewModel派生元を使用して同様の状況にあったときConductor<IScreen>.Collection.OneActive、最初の提案を使用して、のコレクションを維持しViewModelsましたConductor ViewModel.

他のViewModels. ViewModels後でアクティブ化する可能性があるという前提で、特定のものを時々プリロードしていることに気付きました。ViewModelsまた、そのようなリストを使用して、コレクションから削除された後に閉じられた/削除されたものを追跡しましたItems(これは非常に具体的なものでしたが、それが良い習慣かどうかはわかりません)。

ほとんどの単純なケースでは、コレクションでそれを行うことができItems、おそらくまったく問題は発生しません。

于 2013-10-30T22:55:29.420 に答える