2013-05-03 6 views
1

У меня есть два вида, называя их A и B. Когда пользователь выполняет определенное действие над A, я хочу, чтобы он запускал B. Оба представления должны оставаться открытыми.Вызов другой ViewModel с использованием Caliburn.micro

Наследует Дирижера, и я попытался вызвать ActivateItem, но просмотр B никогда не открывается.

Что мне не хватает? Это правильный способ вызвать один вид из другого с помощью Caliburn.micro?

+0

Вы хотите запустить B-view в другом окне? Или у вас будет несколько экранов в одном окне? –

+0

Я хотел бы запустить его в другом окне. Оба A и B должны отображаться в собственных окнах. – Kelly

ответ

3

OK, вот самое простое решение, если B-образ должен находиться в другом окне. Я предполагаю, что AViewModel является «оболочка» вид модели:

public class AViewModel // : Screen - that's optional right here ;) 
{ 
    private readonly BViewModel bViewModel; 
    private readonly IWindowManager windowManager; 

    public AViewModel(BViewModel bViewModel, IWindowManager windowManager) 
    { 
     this.bViewModel = bViewModel; 
     this.windowManager = windowManager; 
    } 

    public void ShowB() 
    { 
     windowManager.ShowWindow(bViewModel); //If you want a modal dialog, then use ShowDialog that returns a bool? 
    } 
} 

и простейшим просмотров (AView):

<Button Name="ShowB" Content="Show another window"/> 

Он покажет новое окно с BView при нажатии на кнопку на AView.

Проводники используются, чтобы иметь несколько экранов в одном окне (или, другими словами, несколько панелей на одном экране). Иногда это OneActive (например, при реализации навигации в WPF) или AllActive, когда одновременно доступно несколько экранов.

Here's хороший учебник относительно некоторых оснований Caliburn.Micro и этой конкретной части описывает Window Manager.

+0

Спасибо, что дает мне то, что мне нужно. Этот учебник хорошо написан и должен помочь. – Kelly

Смежные вопросы