我是Caliburn.Micro的新手,我想知道在我的应用程序中处理用户登录/注销周期的最佳方法是什么.我在网上看到了一些使用空
Shell-View实现这一点的建议,它在LoginView和主应用程序视图之间切换,每个都有一个自定义viewmodel.
我真的不喜欢这个解决方案,因为对我来说这些是两个独立的窗口,具有非常不同的属性(标题,图标,大小),它似乎是一个不干净的解决方案,两个窗口看起来像另一个窗口.另一个问题是,登录窗口来自一个我无法控制但不使用Caliburn.Micro的实用程序库,它是一个普通的旧窗口,当用户单击“登录”时它会给我一个事件.
我还看到了在Bootstrapper启动方法中显示此Dialog的建议,但我看到的问题是用户可以选择“logout”应用程序,它应该再次显示Login对话框.我在处理Bootstrapper中的Views之间切换似乎是错的.
我想要的是使用某种类似于Caliburn Conductor的Applicationviewmodel或ApplicationController,但它不是在Window内的Views之间切换,而是应该在LoginWindow和MainWindow之间切换,并且还应该处理整个应用程序的Closing(还需要退出).在激活时,它将显示LoginWindow,处理Login事件,然后切换到主窗口(Shell).如果用户选择“logout”,则该事件应再次冒泡到Applicationviewmodel / Controller,这将停用/关闭MainWindow,执行logout,然后再次显示LoginDialog.类似的Close事件会执行logout,但随后关闭整个应用程序.
所以我的问题是: