WPF PRISM - отображать несколько всплывающих окон одновременно
Окно My Shell содержит дополнительный всплывающий регион из демонстрационного приложения Stock Trader RI
infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"
Я активирую свои представления, используя метод RequestNavigate для regionManager:
regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri(FooView, UriKind.Relative));
Все работает нормально, если я работаю только с одним видом. Однако в моем случае я хочу иметь несколько всплывающих окон одновременно - например, иметь несколько всплывающих областей одновременно. Кажется, что проблема заключается в активации / деактивации взглядов внутри региона.
Как "убедить" не деактивировать мой предыдущий взгляд внутри региона?
Любая идея?
2 ответа
Оказалось, что решение оказалось проще, чем я ожидал. Вот решение на случай, если это нужно любому.
Мне просто нужно было изменить RegionPopupBehaviours, чтобы использовать AllActiveregion вместо исходного SingleActiveRegion, и в DialogActivation мне пришлось удалить первый вызов CloseContentDialog.
Надеюсь, что это помогает.
Я столкнулся с этой проблемой, и я думал, что я расширил бы пост @Sebastjan, так как это могло бы помочь кому-то в будущем.
Используя код из демонстрации RI Stock Trader, в классе 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);
}
}
Для тех, у кого нет примера кода для приложения фондового трейдера, вы можете найти его здесь