0

我有一个现有的 WPF 项目,我想用 MEF 将它移到 caliburn。

我的 shell 是一个名为 MainViewModel 的视图模型,它使用 DefaultWindowManager 打开一个对话框,这是一个登录窗口,一切正常,但登录后程序停顿一会儿然后退出。并且 MainView 永远不会变得可见。通过调试,我检查并验证了 MainView 确实被创建了,它只是永远不会变得活跃或可见。

我尝试从 Screen、IShell 和 NotifyPropertyBase、IShell 和 IShell 继承我的 MainViewModel。有没有人有任何想法或线索让我尝试谢谢。

除了视图到视图模型链接之外,我没有在 MainView 和 ViewModel 中使用 caliburn,因为我只是采用了旧的视图/视图模型,这可能与任何事情有关吗?有没有办法为某些视图模型/视图打开 ViewModelBinder?

4

2 回答 2

0

实际上,caliburn 的 Rob Eisenberg 非常有帮助,他帮助我解决了这个问题。

问题是,当我切换到 caliburn 时,LoginView 是第一个打开的窗口,它在 MainView 窗口打开之前就关闭了。

windows 将打开的第一个窗口视为主窗口。当主窗口关闭时,窗口检查其他窗口是否打开,如果没有,它会关闭应用程序。

他提供了一种可能的解决方案,使 loginviewmodel 成为 shell 并在打开 mainviewmodel 后关闭它。

于 2011-02-15T18:14:09.827 回答
0

如果您的问题与我的问题相同,我会提到这一点,因为它最近让我慢了一点...如果您的 Shell 有一些不满足的 Imports 则 Shell 不会出现,而且效果相当令人困惑。确保您有 [Import(AllowDefault=True)] 作为您的属性或使用 [ImportMany]

但是,由于您确实说在调试中有一个实例,因此问题可能出在您使用 Caliburn(Micro?) 的方式上。在这种情况下,我建议您复制一个 Caliburn 示例,然后添加您的功能 - 至少您会知道它曾经工作过。

Rgds 约翰

于 2011-02-10T15:36:28.247 回答