在 Caliburn Micro 中的 ViewModel 之间切换
Switching between ViewModels in Caliburn Micro
我正在尝试使用 Caliburn Micro 制作 WPF 应用程序。我在整个页面上有一个带有 ContentControl 的 ShellView。我已经在启动时在 ShellView 的 ContentControl 中显示了一个 UserControl(基本上它是一个登录页面)。登录后,我想关闭当前的 ViewModel 并在 ShellView 的 ContentControl 中显示另一个。我该怎么做?
您需要首先从 Conductor class 继承 ShellViewModel 并从 Screen 继承其他 ViewModel(Login 和 SecondViewModel)。您可以在 Screen and Conductors 上阅读更多内容。例如,
public class ShellViewModel:Conductor<Screen>
public class UserControl1ViewModel: Screen
public class UserControl2ViewModel: Screen
ShellViewModel 将在不同的屏幕之间进行操作,并且继承自 Caliburn.Micro 的 Conductor class。当您展示屏幕时,售票员会确保它已正确激活。如果您正在离开屏幕,它会确保它被停用。
您需要进行的第二个更改是在 ShellView 的上下文控件中,将其绑定到 Conductor 的活动项。
<ContentControl x:Name="ActiveItem"/>
最后,您可以使用 Conductor 的 ActivateItem 方法在屏幕之间切换。
ActivateItem(new UserControl2ViewModel());
我正在尝试使用 Caliburn Micro 制作 WPF 应用程序。我在整个页面上有一个带有 ContentControl 的 ShellView。我已经在启动时在 ShellView 的 ContentControl 中显示了一个 UserControl(基本上它是一个登录页面)。登录后,我想关闭当前的 ViewModel 并在 ShellView 的 ContentControl 中显示另一个。我该怎么做?
您需要首先从 Conductor class 继承 ShellViewModel 并从 Screen 继承其他 ViewModel(Login 和 SecondViewModel)。您可以在 Screen and Conductors 上阅读更多内容。例如,
public class ShellViewModel:Conductor<Screen>
public class UserControl1ViewModel: Screen
public class UserControl2ViewModel: Screen
ShellViewModel 将在不同的屏幕之间进行操作,并且继承自 Caliburn.Micro 的 Conductor class。当您展示屏幕时,售票员会确保它已正确激活。如果您正在离开屏幕,它会确保它被停用。
您需要进行的第二个更改是在 ShellView 的上下文控件中,将其绑定到 Conductor 的活动项。
<ContentControl x:Name="ActiveItem"/>
最后,您可以使用 Conductor 的 ActivateItem 方法在屏幕之间切换。
ActivateItem(new UserControl2ViewModel());