我需要一些帮助,使用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());
}
答案 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());