【问题标题】:Caliburn.Micro WindowManager and Window constructor parameterCaliburn.Micro WindowManager 和 Window 构造函数参数
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2011-02-08
    • 2017-06-12
    • 2012-11-02
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多