WPF PRISM - 同时显示多个弹出视图
WPF PRISM - Display multiple pop-up view on the same time
我的 Shell Window 包含来自 Stock Trader RI 演示应用程序的辅助弹出区域
infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"
我正在使用 regionManager 的 RequestNavigate 方法激活我的视图:
regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri(FooView, UriKind.Relative));
如果我只使用一个视图,一切正常。但是在我的例子中,我想一次有多个弹出窗口 Windows - 就像一次有多个弹出区域。看来问题出在区域内的view数activation/deactivation。
如何"persuade"不禁用我之前在该区域内的视图?
有什么想法吗?
事实证明,解决方案比我预期的要容易。如果有人需要,这里是解决方案。
我只需要修改 RegionPopupBehaviours 以使用 AllActiveregion 而不是原来的 SingleActiveRegion,并且在 DialogActivation 中我必须删除对 CloseContentDialog 的第一次调用。
希望对您有所帮助。
我遇到了这个问题,我想我会扩展 @Sebastjan 的 post,因为它可能会帮助以后的人。
使用 Stock Trader RI 演示中的代码,在 RegionPopupBehaviors class 中,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
我的 Shell Window 包含来自 Stock Trader RI 演示应用程序的辅助弹出区域
infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"
我正在使用 regionManager 的 RequestNavigate 方法激活我的视图:
regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri(FooView, UriKind.Relative));
如果我只使用一个视图,一切正常。但是在我的例子中,我想一次有多个弹出窗口 Windows - 就像一次有多个弹出区域。看来问题出在区域内的view数activation/deactivation。
如何"persuade"不禁用我之前在该区域内的视图?
有什么想法吗?
事实证明,解决方案比我预期的要容易。如果有人需要,这里是解决方案。
我只需要修改 RegionPopupBehaviours 以使用 AllActiveregion 而不是原来的 SingleActiveRegion,并且在 DialogActivation 中我必须删除对 CloseContentDialog 的第一次调用。
希望对您有所帮助。
我遇到了这个问题,我想我会扩展 @Sebastjan 的 post,因为它可能会帮助以后的人。
使用 Stock Trader RI 演示中的代码,在 RegionPopupBehaviors class 中,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