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

caliburn micro: MVVM parent view and child view of parent need to deactivate child

我需要一些帮助来使用 ContentControl 将我的 TicketViewModel 与 Caliburn micro 联系起来。我想使用 StartView 中的按钮访问 ticketView(Model)。 (并停用 startView)

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

这是到目前为止的应用程序 https://imgur.com/a/TncE0

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

您可以执行以下操作:

像这样创建classActivateWindow

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