と私はこれが正常に動作します。この再利用ビューのインスタンスがCaliburn.Micro
<ContentControl x:Name="DetailView" />
ようContentControlsとサブのビューを含むビューを持っています。 ContentControl
の内容を別のViewModelに変更すると、もう一方のViewModelがロードされ、表示されます。しかし、前からViewModelに戻ったときに、ビューインスタンスを再利用するのではなく新しいインスタンスを作成します。注:私は最初のViewModelの新しいインスタンスを割り当てませんが、同じViewModelは面白いです。
新しいビューインスタンスを作成するのではなく、以前のビューのインスタンスを再利用するためにCaliburn.Microをどのようにすればいいですか?
私は、Caliburn.Microフレームワーク自体から 'SimpleContainer'を使用しています。コンテナ内にViewModelsのみをセットアップしました。あなたの入力のおかげで、Viewモデルは 'IoC'コンテナを使って生成することもできます。だから私はちょうどビューも登録する必要があります: 'container.Singleton();' - しかし、ViewModelが 'PerRequest'ならば、すべてのViewModelはViewとの間に' 1:1'の関係がありますか? –
ZoolWay
@ ZoolWayいいえ、ビューをシングルトンとして登録しても、ビューモデルが自動的にシングルトンとして登録されるわけではありません。 'viewModel'もシングルトンとして登録するべきです。 – StepUp
多分私は明確ではありませんでした - 私はViewModelを先に進めていますので、すでにViewModelをIoC-singletonとして定義して、これをかなり長い間行っています。 – ZoolWay