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);
        }
    }

Для тех, у кого нет примера кода для приложения фондового трейдера, вы можете найти его здесь

Другие вопросы по тегам