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