【发布时间】:2019-07-07 20:35:17
【问题描述】:
我是 WPF/MVVM 的新手,我正在开发一个项目,在该项目中我集成了 Dragablz 选项卡控件,我需要使用 new OEEView() 的等效项将新窗口实例化到一个新的标签对象。
但是,在我正在使用的视图的 ctor (OEEView) 中,它需要一个 viewModel 传递给它。我尝试在选项卡实例化代码中创建一个新的 OEESelectionViewModel 并将其传递给新的 OEEView() 但它的默认 ctor 看起来像 public OEESelectionViewModel(IDialogService dialogService, IOEELogger oeeLogger, ISettingsManager settingsManager) 并且我不确定这些 I 对象是如何传递的。从我收集到的信息来看,这是 Prism 的职责,并使用依赖注入解决依赖关系。我还尝试为 OEEView 创建一个默认(无参数)构造函数并在其中创建一个新的 OEESelectionViewModel,但我仍然不知道如何使用 Prism 的 DI。
public OEEView(OEESelectionViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
_viewModel = viewModel;
}
public OEESelectionViewModel(IDialogService dialogService, IOEELogger oeeLogger, ISettingsManager settingsManager)
{
...
}
public TabView()
{
InitializeComponent();
var tab = new HeaderedItemViewModel
{
Header = new HeaderWithCloseViewModel
{
Header = "OEE Chart #1"
},
Content = new OEEView()
};
var viewModel = new TabViewModel(tab);
DataContext = viewModel;
_viewModel = viewModel;
this.Show();
}
我希望能够解析一个新实例并开始使用它,就像我使用 new 关键字一样,但它无法自动解析。
_container = new Container();
_container.Register<OEEView>(Reuse.Singleton);
OEEView client = _container.Resolve<OEEView>();
Additional information: Unable to resolve StationControl.ViewModels.OEESelectionViewModel as parameter "viewModel"
【问题讨论】: