【发布时间】:2017-03-14 08:22:47
【问题描述】:
看起来 Caliburn.Micro 的 WindowManager 与 WPF Windows 存在问题,尽管该参数的类型已在 Caliburn.Micro IoC 中注册,但具有构造函数参数。除了在构造函数中使用臭名昭著的服务定位器IoC.Get(Of T) 之外,有没有更好的方法将所需的参数放入 Window 中?
Namespace Views
Class MainWindowView
Private _eventAggregator As IEventAggregator
Public Sub New(eventAggregator As IEventAggregator)
_eventAggregator = eventAggregator
End Sub
End Class
End Namespace
Sub ShowMainWindowView()
'Everything is correctly registered in Ioc...
Dim windowManager As New WindowManager
Dim viewModel As New MainWindowViewModel
windowManager.ShowDialog(viewModel)
'Exception is thrown about absence of parameterless constructor of MainWindowView
End Sub
【问题讨论】:
-
什么问题?你有错误吗?你的代码是什么样的?请发帖Minimal, Complete, Verifiable example
-
看起来错了。您的视图模型应该与窗口管理器而不是视图交互。
-
没错,ShowMainWindowView 方法可以在任何地方。就我而言,它是视图模型的命令方法。
-
在那种情况下,我不确定问题是什么?像使用
MainWindowView和事件聚合器一样,将窗口管理器作为参数传递给视图模型构造函数?。 -
问题是WindowManager不能与Window一起工作,在构造函数中有参数。你明白吗?
标签: wpf mvvm caliburn.micro