Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf Caliburn.Micro WindowManager和窗口构造函数参数_Wpf_Mvvm_Caliburn.micro - Fatal编程技术网

Wpf Caliburn.Micro WindowManager和窗口构造函数参数

Wpf Caliburn.Micro WindowManager和窗口构造函数参数,wpf,mvvm,caliburn.micro,Wpf,Mvvm,Caliburn.micro,看起来Caliburn.Micro的WindowManager与WPF窗口存在问题,WPF窗口具有构造函数参数,尽管该参数的类型已在Caliburn.Micro IoC中注册。除了在构造函数中使用臭烘烘的服务定位器(Of T),还有没有更好的方法将所需的参数放入窗口 Namespace Views Class MainWindowView Private _eventAggregator As IEventAggregator Public Sub New(eventAggr

看起来Caliburn.Micro的WindowManager与WPF窗口存在问题,WPF窗口具有构造函数参数,尽管该参数的类型已在Caliburn.Micro IoC中注册。除了在构造函数中使用臭烘烘的服务定位器(Of T),还有没有更好的方法将所需的参数放入窗口

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

我试图在新的、清晰的项目中再次重现这个问题,它可以工作-只需要在IoC容器中注册视图(窗口)的类型,WindowManager就会自动在视图的构造函数中注入所需的依赖项。

什么问题?你有错误吗?你的代码看起来像什么?请在错误的方向上发布一个外观。视图模型应该与窗口管理器交互,而不是与视图交互。确实如此,ShowMainWindowView方法可以在任何位置。在我的例子中,它是视图模型的命令方法。在这种情况下,我不确定问题是什么?将窗口管理器作为参数添加到视图模型构造函数中,就像您使用
MainWindowView
和事件聚合器一样。问题是WindowManager无法使用构造函数中有参数的窗口。你明白吗?