所以让我这样说吧。我有一个LogInViewModel
和LogInView
。 ViewModel中有一个Login()
方法,如果用户单击视图中的某个按钮,该方法将被调用。现在我想让仪表板显示登录是否成功。我该怎么做呢?我无法在文档中找到明确的答案。如何在Caliburn.Micro中从一个视图导航到另一个视图?
1
A
回答
3
我认为你的仪表板本质上是你的shell。在这种情况下,您可以引导您的LoginViewModel
和Login
方法,登录成功后,您可以使用Caliburn.Micro WindowManager
显示DashboardViewModel
并关闭LoginViewModel
。
喜欢的东西(使用MEF):
Bootstrapper.cs
public class Bootstrapper : Caliburn.Micro.Bootstrapper<ILoginViewModel>
{
...
}
LoginViewModel.cs
public class LoginViewModel : Screen, ILoginViewModel
{
private readonly IWindowManager windowManager;
private readonly IDashboardViewModel dashboardViewModel;
[ImportingConstructor]
public LoginViewModel(IWindowManager windowManager, IDashboardViewModel dashboardViewModel)
{
this.windowManager = windowManager;
this.dashboardViewModel = dashboardViewModel;
}
public void Login()
{
// if login success...
this.windowManager.ShowDialog(this.dashboardViewModel);
this.TryClose();
}
}
2
我只是在我增加了一个非常简单的登录例子SL4工程“实验室库“为Caliburn.Micro。
https://github.com/jenspettersson/Caliburn.Micro.Labs/tree/master/src/Login
它使用罗布艾森伯格使用在他的“游戏库”为例,视图之间切换显示类。
在Login()方法中,它告诉我的Shell(您的仪表板?)显示我的LoginResultViewModel并设置登录结果消息。
yield return Show.Child<LoginResultViewModel>().In<IShell>().Configured(c => c.ResultMessage = "Successfully logged in!");
检查我的github回购代码。
最近我还没有使用Caliburn.Micro,所以我绝不是专家,但这种方式对我很有用。
∥焦
编辑:这回答了如何在视图之间进行导航,如果你想显示一个“弹出”显示,如果登录成功,去与其他recomendations。
+0
谢谢,以后肯定会有用。 – 2011-03-01 11:19:54
相关问题
- 1. 在WPF中从一个视图导航到另一个视图
- 2. 如何从Silverlight中的viewmodel从一个视图导航到另一个视图?
- 3. 如何从子视图导航到另一个视图
- 4. 从MainView导航到另一个视图
- 5. 从tableview导航到另一个视图
- 6. 如何在Caliburn.Micro中从一个ViewModel导航到另一个ViewModel?
- 7. 导航到另一个视图时,在表视图中的accessoryButtonTapped
- 8. Ipad SplitViewController导航到另一个视图
- 9. 导航到另一个视图iPhone SDK?
- 10. 导航到另一个视图iPhone SDK?
- 11. Formpanel随导航到另一个视图
- 12. 如何在iphone sdk中的单个viewcontroller中从一个视图导航到另一个视图?
- 13. 从一个视图控制器导航到另一个
- 14. 如何从一个视图移动到另一个视图
- 15. 如何从一个视图切换到另一个视图?
- 16. 如何在成功登录后在ios中从一个视图导航到另一个视图
- 17. 将视图从一个视图移动到另一个视图
- 18. 如何从一个单元格导航到下一个视图?
- 19. 如何在导航控制器中将数据从一个视图传递到另一个视图
- 20. 从一个视图到另一个视图导致UINavigation崩溃,如何解决?
- 21. 如何在textview上点击时导航到另一个视图?
- 22. emberjs从另一个视图转到另一个视图
- 23. 如何将一个视图导航到其他视图
- 24. 如何从一个django views.py导入视图到另一个
- 25. 如何从一个表视图控制器导航到另一个表视图控制器在Xcode
- 26. 如何从一个视图导航到另一个视图从codeigniter网站的菜单栏
- 27. 如何在MVC3中从一个视图重定向到另一个视图?
- 28. 如何在iPhone中从一个视图切换到另一个视图?
- 29. 如何从另一个视图调用一个Flask视图?
- 30. 如何将数组从一个视图传递到另一个视图内的另一个视图
我还没有这么想,但现在你提到它使仪表板的外壳可能会解决我遇到的大多数问题。 – 2011-03-01 10:38:51
我很抱歉,但刚才我注意到了一些错误。我的窗口管理器没有简单的Show方法。 – 2011-03-01 10:58:07
已更新。使用Silverlight你有一个ShowDialog,ShowNotification和ShowPopup。 ShowDialog显示指定视图模型的模态对话框,因此您可能需要切换逻辑并引导您的DashboardViewModel,然后如果用户未通过身份验证,请使用WindowManager.ShowDialog方法显示LoginViewModel(以便它位于仪表板顶部)。用户在成功登录之前将无法越过此模式屏幕,您只需关闭该对话框即可。 – devdigital 2011-03-01 11:03:06