Nawigacja za pomocą Caliburn Micro

Bawię się z Caliburn.Micro i mam teraz bardzo prostą aplikację.

Ma AppView, który faktycznie ma ContentControl dla NavigationBar, InnerView i StatusBar.

Teraz chcę obsługiwać nawigację między różnymi widokami wewnętrznymi.

W tej chwili używam rejestratora zdarzeń do opublikowania zdarzenia NavigationEvent, które powinno przełączyć widok wewnętrzny okna głównego na inny widok.

Oto moje wywołanie Publish (wszystkie InnerViews mają tę samą klasę podstawową, która ma IEventAggregator)

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

W tej chwili przekazuję ciąg znaków do AppViewModel, który obsługuje 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;
        }

Przekazywanie ciągów działa, ale jest błędne i niezbyt czyste.

Jaki jest sposób obsługi Caliburn? Czy to powinien zrobić dyrygent?

questionAnswers(1)

yourAnswerToTheQuestion