Navegação com o Caliburn Micro

Estou brincando com o Caliburn.Micro e tenho uma aplicação muito simples agora.

Ele tem um AppView, que na verdade tem um ContentControl para um NavigationBar, um InnerView e um StatusBar.

Agora quero manipular a Navegação entre diferentes visões internas.

No momento, uso o eventaggregator para publicar um NavigationEvent, que deve alternar a visão interna da janela principal para outra exibição.

Aqui está minha chamada para Publicar (todos os InnerViews têm a mesma baseclass que possui um IEventAggregator)

public void NavigateOverview()
{
    base._eventAggregator.Publish(new NavigateEvent("OverviewViewModel"));
}

Agora eu passo uma string para o AppViewModel, que lida com o NavigateEvent:

        public void Handle(NavigateEvent navigate)
        {
            InnerViewModel target;

            switch (navigate.TargetViewModel)
            {
                case "SelectProjectViewModel":
                {
                    target = new SelectProjectViewModel(_eventAggregator);
                    break;
                }
                case "OverviewViewModel":
                {
                    target = new OverviewViewModel(_eventAggregator);
                    break;
                }
                default:
                {
                    throw new InvalidOperationException("no target type found");
                }
            }

            this.CurrentInnerViewModel = target;
        }

Passar strings funciona, mas é propenso a erros e não é muito limpo.

Qual é a maneira Caliburn de lidar com isso? É isso que um condutor deveria fazer?

questionAnswers(1)

yourAnswerToTheQuestion