I have two screens which need to manage a list of items. The user can navigate from 1st screen to 2nd screen.

When user navigates back from 1st screen, the list of items needs to be saved to a store.

The way I was thinking to do it having a service holding the collection which gets injected in the view-models. 
But the service instance must be released once user navigates back from 1st screen:

```
// somewhere, maybe in Application:
LifetimeManager = new ContainerControlledLifetimeManager();
Container.RegisterType<Service>(lifetimeManager);

class FirstPage()
{
   ContainerControlledLifetimeManager _lifetimeManager;

   public FirstPage()
   {
       InitializeComponent();
   }

   void OnDisappearing()
   {
       LifetimeManager.RemoveValue();
   }
}

```

But this seems awkward, there has to be a better way to do this...

I see there's a `ExternallyControlledLifetimeManager` which seems it's what I need, but it would still require for `FirstPage` instance to get the instance of the manager and call `RemoveValue`. Or, I would call `GC.Collect` on `OnDisappearing` to make sure the GC collects the instance of the service, and `ExternallyControlledLifetimeManager` will recreate it next time it needs to be injected in the `FirstPageViewModel`. But calling `GC.Collect` seems wrong too...