【发布时间】:2019-02-15 15:40:23
【问题描述】:
我正在按照 MVVM 模式使用 WPF 开发一个 Prism 示例应用程序,但是当它通过以下代码时,它在我的应用程序中出现了一些问题:
var view = _container.Resolve<DummyView>();
IRegion region = _regionMansger.Regions["ViewInjectionMain_MainRegion"];
我已经尝试过其他 stackoverplow 帖子中提出的解决方案,但它不起作用。
class ViewInjectionMainViewModel : BindableBase
{
IUnityContainer _container;
IRegionManager _regionMansger;
public ViewInjectionMainViewModel(IUnityContainer container, IRegionManager regionManager)
{
_container = container;
_regionMansger = regionManager;
var view = _container.Resolve<DummyView>();
IRegion region = _regionMansger.Regions["ViewInjectionMain_MainRegion"];
region.Add(view);
}
}
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
base.InitializeShell();
var regionManager = this.Container.Resolve<IRegionManager>();
if (regionManager != null)
{
regionManager.RegisterViewWithRegion("MainRegion", typeof(FirstView));
}
Container.RegisterType<object, RegionBasic>("RegionBasic");
Container.RegisterType<object, RegionControlMain>("RegionControlMain");
Container.RegisterType<object, DummyView>("DummyView");
Container.RegisterType<object, ViewInjectionMain>("ViewInjectionMain");
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
var catalog = (ModuleCatalog)ModuleCatalog;
catalog.AddModule(typeof(ModuleA.ModuleAModule));
catalog.AddModule(typeof(ModuleB.ModuleBModule));
catalog.AddModule(typeof(DummyModule.DummyModuleClass));
}
}
谢谢。
【问题讨论】:
-
您的解决方案中的哪个文件包含代码?
-
@Nikolaus ViewModels → ViewINjectionMainViewModel.cs or build → Menubar → "Views/Region" → "0. VIew injection" 谢谢