Prism区域注册遇到的一个问题
wpf开发使用prism,如果有多个窗口作为主窗口进行切换,默认只有在app.xaml.cs通过CreateShell创建的窗口会自动注册区域,其它的窗口注册区域的方式:手动调用RegionManager.SetRegionManager,例如:
var shell = Application.Current.MainWindow = window ?? ContainerLocator.Current.Resolve<T>();RegionManager.SetRegionManager(shell, ContainerLocator.Current.Resolve<IRegionManager>());
上面适用于shell里的控件指定了其RegionName的情况,如果没指定的情况,可以按下面这样操作:
public MainWindow(){InitializeComponent();var regionManager= ContainerLocator.Current.Resolve<IRegionManager>();if (regionManager != null){SetRegionManager(regionManager, this.flyoutsControlRegion, RegionNames.FlyoutRegion);SetRegionManager(regionManager, this.rightWindowCommandsRegion, RegionNames.ShowSearchPatientRegion);}}void SetRegionManager(IRegionManager regionManager, DependencyObject regionTarget, string regionName){RegionManager.SetRegionName(regionTarget, regionName);RegionManager.SetRegionManager(regionTarget, regionManager);}
直接通过
RegionManager.SetRegionName(regionTarget, regionName)
设置控件的RegionName,再通过
RegionManager.SetRegionManager(regionTarget, regionManager)
设置其区域。
Comments
Be the first to post a comment