2016-03-16 6 views
0

У меня есть AppViewModel, который содержит меню в верхней части окна. В конструкторе AppViewModel я показываю UserControl. В этом UserControl у меня есть кнопка, которая вызывает другую viewmodel (UserControl).Caliburn.Micro Вызов viewmodel из UserControl

Идея состоит в том, чтобы сохранить меню и работать с содержимым окна. Итак, у меня есть 1 окно и 2 UserControls. Это верно?

Как я могу вызвать другую ViewModel с кнопки, находящейся внутри UserControl? Или я должен назвать это из окна? Но кнопка находится внутри UserControl!

Мой код:

class AppViewModel : Conductor<object> 
{ 
    private bool _MenuIsVisible; 

    public bool MenuIsVisible 
    { 
     get { return _MenuIsVisible; } 
     set 
     { 
      if (_MenuIsVisible != value) 
      { 
       _MenuIsVisible = value; 
       NotifyOfPropertyChange(() => MenuIsVisible); 
      } 
     } 
    } 

    public AppViewModel() 
    { 
     MenuIsVisible = true; 
     _ShowTutorial(); 
    } 

    private void _ShowTutorial() 
    { 
     ActivateItem(new FirstViewModel()); 
    } 

} 



public class FirstViewModel : Screen 
{ 
    protected override void OnActivate() 
    { 
     base.OnActivate(); 
    } 
} 

На FirstViewModel у меня есть кнопка, которая должна вызвать SecondViewModel.

ответ

1

Для перехода от первого ViewModel ко второму ViewModel вы могли бы иметь метод в первом ViewModel, как это:

public void NavigateToSecond() 
{ 
    var conductor = this.Parent as IConductor; 
    conductor.ActivateItem(new SecondViewModel()); 
} 

Родитель относится к проводнику, который будет заботиться о навигации для вас.

+0

Работал отлично! Большое спасибо! –

+0

на SecondViewModel У меня есть кнопка «Назад», это верно, делает то же самое? Благодаря! –

+1

Вы также можете использовать метод TryClose на экране. Если вы еще этого не сделали, я настоятельно рекомендую отличную документацию здесь: http://caliburnmicro.com/documentation/composition. – Aetherix

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