2016-04-18 8 views
1

と私はこれが正常に動作します。この再利用ビューのインスタンスがCaliburn.Micro

<ContentControl x:Name="DetailView" /> 

ようContentControlsとサブのビューを含むビューを持っています。 ContentControlの内容を別のViewModelに変更すると、もう一方のViewModelがロードされ、表示されます。しかし、前からViewModelに戻ったときに、ビューインスタンスを再利用するのではなく新しいインスタンスを作成します。注:私は最初のViewModelの新しいインスタンスを割り当てませんが、同じViewModelは面白いです。

新しいビューインスタンスを作成するのではなく、以前のビューのインスタンスを再利用するためにCaliburn.Microをどのようにすればいいですか?

答えて

1

What IoC containerViewViewModelsのインスタンスを作成するために使用しますか?

<ContentControl/>という1つのインスタンスを作成するだけです。私はIoCコンテナUnityでシングルトンを作成する方法をお見せしましょう:

container.RegisterType<IViewContentControl, ConentControl>(
         new ContainerControlledLifetimeManager()); 

ContainerControlledLifetimeManager()がちょうどつのインスタンスは、アプリケーションのライフサイクル全体であることを意味します。

+0

私は、Caliburn.Microフレームワーク自体から 'SimpleContainer'を使用しています。コンテナ内にViewModelsのみをセットアップしました。あなたの入力のおかげで、Viewモデルは 'IoC'コンテナを使って生成することもできます。だから私はちょうどビューも登録する必要があります: 'container.Singleton ();' - しかし、ViewModelが 'PerRequest'ならば、すべてのViewModelはViewとの間に' 1:1'の関係がありますか? – ZoolWay

+0

@ ZoolWayいいえ、ビューをシングルトンとして登録しても、ビューモデルが自動的にシングルトンとして登録されるわけではありません。 'viewModel'もシングルトンとして登録するべきです。 – StepUp

+0

多分私は明確ではありませんでした - 私はViewModelを先に進めていますので、すでにViewModelをIoC-singletonとして定義して、これをかなり長い間行っています。 – ZoolWay

関連する問題