Я новичок в платформе Caliburn Micro и работаю над приложением, имеющим представление списка, которое можно дважды щелкнуть по элементу, чтобы перейти к подробному представлению.
Это все работает нормально, и в настоящее время я выполняю прямую навигацию, отправляя сообщения ChangePage, которые SHellView берет и выдает команду ActivateItem для новой страницы.
Что я не могу понять, так это как перейти обратно на страницу и сохранить его состояние, в котором он был, когда вы его оставили? Я читал о коллекции Conductor, но не совсем уверен, как она работает на практике?
Есть ли у кого-нибудь пример, когда они отправляют сообщения ChangePage с помощью eventAggregator, и он обрабатывается ShellView, проверяя, уже существует ли эта страница? существует первым, а если нет, создайте новый?
Спасибо!
ОБНОВЛЕНИЕ:
Мое сообщение на странице изменения выглядит так:
public class ChangePageMessage
{
public readonly Type _viewModelType;
public ChangePageMessage(Type viewModelType)
{
_viewModelType = viewModelType;
}
}
И моя обработка сообщения в ShellView:
public void Handle(ChangePageMessage message)
{
if (message._viewModelType == typeof(SearchResultsViewModel))
{
ActivateItem(new SearchResultsViewModel(_eventAggregator));
}
else if(message._viewModelType == typeof(DetailedDocumentViewModel))
{
ActivateItem(new DetailedDocumentViewModel(_eventAggregator));
}
else
{
//here
}
}