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

Post a comment