Caliburn.Micro 从 UserControl 调用视图模型

Caliburn.Micro Calling a viewmodel from UserControl

我有一个 AppViewModel,它包含 Window 顶部的菜单。在 AppViewModel 结构上,我展示了一个 UserControl。在这个 UserControl 中,我有一个按钮,它调用另一个视图模型 (UserControl)。

想法是保留菜单并处理 window 的内容。所以,我有 1 个 window 和 2 个用户控件。这是正确的吗?

如何从 UserControl 中的按钮调用另一个 ViewModel?或者,我必须从 Window 调用它?但是按钮在 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。

要从第一个 ViewModel 导航到第二个 ViewModel,您可以在第一个 ViewModel 中使用这样的方法:

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

家长指的是负责为您导航的售票员。