c# - 在 Caliburn Micro 中的 ViewModel 之间切换

标签 c# wpf mvvm caliburn.micro

我正在尝试使用 Caliburn Micro 制作 WPF 应用程序。我在整页上有一个带有 ContentControl 的 ShellView。我已经在 ShellView 的 ContentControl 中显示了一个 UserControl(基本上它是一个登录页面)。登录后,我想关闭当前的 ViewModel 并在 ShellView 的 ContentControl 中显示另一个。我怎样才能做到这一点?

最佳答案

您需要首先从 Conductor 类继承 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 类。当您显示屏幕时,指挥会确保它已正确激活。如果您正在从屏幕过渡,它会确保它被停用。

您需要进行的第二个更改是在 ShellView 中的上下文控件中,方法是将其绑定(bind)到 Conductor 的事件项。
<ContentControl x:Name="ActiveItem"/>

最后,您可以使用 Conductor 的 ActivateItem 方法在屏幕之间切换。
 ActivateItem(new UserControl2ViewModel());

关于c# - 在 Caliburn Micro 中的 ViewModel 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57341852/

相关文章:

c# - 将动态数据绑定(bind)到 Silverlight Datagrid c#

c# - 在 PropertyChange 的 ItemsControl 中为派生的 ObservableCollection<T> 重新排序呈现的项目

c# - 如何正确使用 NetMq Poller 接收数据

wpf - 绑定(bind)到集合中的单个元素

C#:字典 TryGetValue 创建实例而不是获取引用

c# - 将 List<T> 作为接口(interface)上的属性

c# - 将日期时间插入 Access

c# - 如何使用列名字典来设置数据表结构?

mvvm - 在 Windows 10 通用应用程序中将命令绑定(bind)到集线器部分标题单击

silverlight-3.0 - 在 Silverlight MVVM RIA 服务应用程序中放置业务规则的最佳位置在哪里?