Lücks
Lücks

Reputation: 3984

Caliburn.Micro Calling a viewmodel from UserControl

I have a AppViewModel, that contains a menu on Top of the Window. On the AppViewModel construct, I'm showing a UserControl. In this UserControl I have a button, that calls another viewmodel (UserControl).

The idea is to keep the menu and working on the content of window. So, I have 1 window and 2 UserControls. This is correct?

How can I call another ViewModel from a button that is inside of a UserControl? Or, I have to call it from the Window? But the button it's inside of the UserControl!

My code:

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();
    }
}

On the FirstViewModel I have a button that needs to call SecondViewModel.

Upvotes: 0

Views: 913

Answers (1)

Aetherix
Aetherix

Reputation: 2250

To navigate from the first ViewModel to the second ViewModel you could have a method in the first ViewModel like this:

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

The parent refers to the conductor which will take care of navigating for you.

Upvotes: 2

Related Questions