WPF PRISM - 同时显示多个弹出视图

时间:2015-06-17 09:30:45

标签: wpf navigation prism regions

我的Shell窗口包含Stock Trader RI演示应用程序的辅助弹出区域

infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"

我正在使用regionManager的RequestNavigate方法激活我的观点:

regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri(FooView, UriKind.Relative));

如果我只使用一个视图工作,一切正常。但是在我的情况下,我希望同时拥有多个弹出窗口 - 就像一次拥有多个弹出区域一样。似乎问题在于激活/停用该区域内的视图。

如何"说服"不要停用我之前在该地区内的观点?

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

事实证明,解决方案比我预期的要容易。如果enybody需要它,这是解决方案。

我只需要修改RegionPopupBehaviours以使用AllActiveregion而不是原始的SingleActiveRegion,而在DialogActivation中我必须删除对CloseContentDialog的第一次调用。

希望这有帮助。

答案 1 :(得分:0)

我遇到了这个问题,我想我会扩展@ Sebastjan的帖子,因为它可能会帮助有人在路上。

使用Stock Trader RI演示中的代码,在RegionPopupBehaviors类中,RegisterNewPopupRegion方法应如下所示:

public static void RegisterNewPopupRegion(DependencyObject owner, string regionName)
    {
        IRegionManager regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
        if (regionManager != null)
        {
            IRegion region = new AllActiveRegion(); //This was changed from SingleActiveRegion
            DialogActivationBehavior behavior;
            behavior = new WindowDialogActivationBehavior();
            behavior.HostControl = owner;

            region.Behaviors.Add(DialogActivationBehavior.BehaviorKey, behavior);
            regionManager.Regions.Add(regionName, region);
        }
    }

对于那些没有股票交易者应用程序代码示例的人,您可以找到它here