caliburn micro:MVVM父视图和父视图的子视图需要停用子

时间:2018-02-14 11:46:25

标签: wpf caliburn.micro

我需要一些帮助,使用ContentControl通过Caliburn micro到达我的TicketViewModel。我想使用StartView中的按钮访问ticketView(Model)。 (并停用startView)

下一张图片是我想要与他们的CM实现进行的交互 https://imgur.com/a/SluXZ

这是迄今为止的应用 https://imgur.com/a/TncE0

标题和styleElements属于ShellView。中心广场是一个内容控制。默认情况下,启动视图已激活。

正如您所看到的,我想使用startView中的按钮(它本身嵌套在ShellView中的contentControl中),并在ShellView中使用MenuItem来访问TicketsView。

Shellview中的代码 <ContentControl Grid.Column="1" Grid.Row="1" x:Name="ActiveItem"/>

ShellViewModel中的代码

public class ShellViewModel : Conductor<object>
{
public ShellViewModel(){
ActivateItem(new StartViewModel());}

public void AlleTicketsPageLaden(){
ActivateItem(new AlleTicketsViewModel());}

StartView中的代码 <Button Content="Tickets" x:Name="StartTicketKnop"/>

StartViewModel中的代码

  public class StartViewModel : Conductor<object>
  {
    public void StartTicketKnop()
    {
      ActivateItem(new AlleTicketsViewModel());
    }

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

像这样创建课程ActivateWindow

 public static class ActivateWindow
    {
        public static ShellViewModel Parent;

        public static void OpenItem(IScreen t)
        {
            Parent.ActivateItem(t);
        }
    }

并在您的ShellViewModel构造函数

public ShellViewModel()
        {
            ActivateWindow.Parent = this;
        }

现在在任何ViewModel你都可以进行以下操作:

ActivateWindow.OpenItem(new YourViewModel());