gpt4 book ai didi

c# - Prism 错误 'The region manager does not contain the region'

转载 作者:行者123 更新时间:2023-12-03 10:56:40 24 4
gpt4 key购买 nike

enter image description here

我正在按照MVVM模式使用WPF开发Prism Sample应用程序,但是当它通过以下代码时,它在我的应用程序中存在一些问题:

var view = _container.Resolve<DummyView>();
IRegion region = _regionMansger.Regions["ViewInjectionMain_MainRegion"];

我已经尝试了其他stackoverplow帖子中提出的解决方案,但是它不起作用。

( project github here)。
     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));
}
}

谢谢。

最佳答案

regionManager.RegisterViewWithRegion("MainRegion", typeof(FirstView));
regionManager.RegisterViewWithRegion("ViewInjectionMain_MainRegion", typeof(DummyView)); //add this line

并通过Dispatcher获取区域(也应加载ViewInjectionMain.xaml以加载ViewInjectionMain_MainRegion)
class ViewInjectionMainViewModel :BindableBase
{
IUnityContainer _container;
IRegionManager _regionMansger;
public ViewInjectionMainViewModel(IUnityContainer container, IRegionManager regionManager)
{
_container = container;


_regionMansger = regionManager;

System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
{
var view = _container.Resolve<DummyView>();


IRegion region = _regionMansger.Regions["ViewInjectionMain_MainRegion"];


region.Add(view);
}));
}

}

希望这能够帮到你

关于c# - Prism 错误 'The region manager does not contain the region',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52270748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com