Мне было интересно, какой самый обычный способ навигации между двумя несвязанными моделями просмотра с использованием Caliburn.Micro? Предположим, что в одной части приложения есть дерево представлений: ParentViewModel-> ChildVM1-> ChildVM2 и т. Д. Кроме того, OmniVM должен быть в состоянии перейти к любой из вышеупомянутых моделей представлений. Под «навигацией» я подразумеваю поиск соответствующего экземпляра (после этого часть активации является простой). Я не хочу использовать какое-либо использование IEventAggregator или Container.Resolve. Спасибо за ответНавигация с использованием Caliburn.Micro
ответ
devdigital сказало это в комментариях и я буду говорить об этом здесь, и как Робах (архитектор, который написал рамку) бы сказать, вопросы архитектуры в интерфейсе тоже. Это означает, что вам следует подумать о том, как организован ваш уровень представления. Другими словами, у вас будет интерфейс с вкладками, в котором основным окном будет проводник Caliburn.Micro и экраны с вкладками, или у вас будет интерфейс пользователя Visual Studio, который использует стыковочные окна и панели инструментов, рассмотрите этот тип мышления при построении пользовательского интерфейса. Теперь, если вам не нравится архитектура, и вы просто хотите создать свой графический интерфейс, я могу сказать вам, что Screen and Conductor являются наиболее важными классами для навигации. I Проконсультируйте, чтобы прочитать статью Screens, Conductors and Compositions, если вы еще этого не сделали, это даст вам представление о том, о чем я говорю, и о кучей полезных мыслей.
Edit: Для вашей конкретной ситуации и так как у вас есть эта глубоко вложенную структуру я бы создать интерфейс для навигации по MenuViewModel
, что-то вроде этого:
public interface IMenuNavigator {
void NavigateToItem(Item i);
}
Тогда я бы впрыскивать это в те внутренний взглянуть на модели, я думаю, у вас есть чувство того, что я имею в виду. С другой стороны, вы также можете использовать IEventAggregator
, который используется для слабосвязанной связи между несвязанными компонентами (viewmodels), например, в вашей ситуации, поэтому вы публикуете сообщения в агрегаторе для навигации, а MenuViewModel
слушает их и обрабатывает их правильно. Вы можете даже прийти с лучшей идеей в зависимости от вашей конкретной внутренней ситуации. Надеюсь, это поможет.
Я уже прочитал это, и я хорошо знаком с тем, как C. Micro обрабатывает слой презентации. Однако я не нашел одного четко определенного способа, который позволяет перемещаться между различными частями дерева представлений. Например, у меня есть ShellViewModel, который является просто проводником с двумя детьми: MainViewModel и LoginViewModel. Теперь MainViewModel является самим проводником и содержит, скажем, MenuViewModel и ContentViewModel. MenuViewModel имеет список опций и сам проводник, в то время как ContentViewModel имеет различный контент, который может быть очень сложным. –
Я хочу иметь возможность получить из любой модели внутреннего вида все, что находится внутри ContentViewModel, к определенному элементу MenuViewModel. Как вы достигаете такой возможности? Надеюсь, я достаточно хорошо разъяснил свой вопрос)) –
@GenaVerdel, я отредактировал ответ, проверьте редактирование, пожалуйста. –
- 1. Композиция макета/навигация с Caliburn.Micro
- 2. WPF Caliburn.Micro/mvvm Навигация
- 3. Caliburn.micro, SplitView и навигация
- 4. навигация в Caliburn.Micro - как заменить все окно
- 5. Связывание изображения с Uri с использованием Caliburn.Micro
- 6. Навигация с использованием RelayCommand
- 7. Навигация (с использованием функций)
- 8. навигация с использованием BEM
- 9. ModalContentPresenter с Caliburn.Micro
- 10. WPF/Caliburn.Micro - Входная проверка с использованием IDataErrorInfo
- 11. Binding SelectionChanged to ViewModel с использованием Caliburn.Micro
- 12. Вызов другой ViewModel с использованием Caliburn.micro
- 13. Странное поведение BooleanToVisibilityConverter с использованием Caliburn.Micro
- 14. Отображение MessageDialog с использованием MVVM и Caliburn.Micro
- 15. Роботизированная навигация с использованием Kinect
- 16. Внутренняя навигация с использованием JOSM
- 17. отзывчивая навигация с использованием запроса
- 18. WPF Навигация с использованием MVVM
- 19. Навигация WPF с использованием MVVM
- 20. Навигация с использованием href = "#!/Id"
- 21. горизонтальная навигация с использованием nowrap
- 22. Динамическая навигация с использованием PHP:
- 23. Навигация с использованием управляемых компонентов
- 24. Интеграция CefSharp.WPF с Caliburn.Micro
- 25. Соглашения UWP с Caliburn.Micro
- 26. Caliburn.Micro с контроллером?
- 27. Проверка с помощью Caliburn.Micro
- 28. Использование ProgressBar с Caliburn.micro
- 29. Навигация с Caliburn Micro
- 30. Caliburn + Xamarin навигация
Не могли бы вы расширить то, что вы пытаетесь достичь? Вы имеете в виду ShellViewModel, которому необходимо провести множество экранов? – devdigital