在Caliburn Micro中的ViewModel之间切换

时间:2019-08-03 20:25:36

标签: c# wpf mvvm caliburn.micro

我正在尝试使用Caliburn Micro制作WPF应用程序。我在整个页面上都有一个带有ContentControl的ShellView。我已经在启动时在ShellView的ContentControl(基本上是登录页面)中显示了一个UserControl。登录后,我想关闭当前的ViewModel并在ShellView的ContentControl中显示另一个。我该怎么办?

1 个答案:

答案 0 :(得分:1)

首先需要从Conductor类继承ShellViewModel,从Screen继承其他ViewModel(Login和SecondViewModel)。您可以在Screen and Conductors上阅读更多内容。例如,

 public class ShellViewModel:Conductor<Screen> 

 public class UserControl1ViewModel: Screen 

 public class UserControl2ViewModel: Screen

ShellViewModel将在不同的Screen之间进行操作,并继承自Caliburn.Micro的Conductor类。显示屏幕时,导体将确保其已正确激活。如果您要离开屏幕,请确保将其禁用。

您需要进行的第二项更改是通过将其绑定到Conductor的Active Item在ShellView的上下文控件中。

<ContentControl x:Name="ActiveItem"/>

最后,您可以使用Conductor的ActivateItem方法在屏幕之间进行切换。

 ActivateItem(new UserControl2ViewModel());