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