Я новичок в WPF / MVVM и работаю над проектом, в котором я интегрировал элементы управления вкладками Dragablz таким образом, что мне нужен эквивалент new OEEView()
для создания нового окна в области содержимого новый объект вкладки.
Однако, в ctor представления, которое я использую (OEEView), ему нужно передать viewModel. Я попытался создать новый OEESelectionViewModel в коде создания вкладки и передать его новому OEEView (), но его ctor по умолчанию выглядит как public OEESelectionViewModel(IDialogService dialogService, IOEELogger oeeLogger, ISettingsManager settingsManager)
, и я не уверен, как эти I-объекты передаются. Из того, что я понял, это ответственность Prism и разрешение зависимостей с помощью внедрения зависимостей. Я также пытался создать конструктор по умолчанию (без аргументов) для OEEView и создать в нем новую OEESelectionViewModel, но я все еще застрял с точки зрения использования DI-модуля Prism.
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();
}
Я ожидаю, что смогу разрешить новый экземпляр и начать использовать его, как если бы я использовал новое ключевое слово, но оно не может само разрешиться автоматически.
_container = new Container();
_container.Register<OEEView>(Reuse.Singleton);
OEEView client = _container.Resolve<OEEView>();
Additional information: Unable to resolve StationControl.ViewModels.OEESelectionViewModel as parameter "viewModel"