Prism RequestNavigate от PrismApplication сразу при запуске - PullRequest
0 голосов
/ 26 октября 2018

В Призма 7 Я могу RegisterForNavigation и RequestNavigate из IModule, как это:

public class ModuleAModule : IModule
{
    public void OnInitialized(IContainerProvider containerProvider)
    {
        var regionManager = containerProvider.Resolve<IRegionManager>();
        regionManager.RequestNavigate("ContentRegion", "PersonList");
    }

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterForNavigation<PersonList>();
    }
}

, и я знаю, что могу RegisterForNavigation из PrismApplicationкак это:

public partial class App : PrismApplication
{
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterForNavigation<ViewA>();
    }
}

но как я могу RequestNavigate с PrismApplication сразу при запуске?

Я пробовал это:

public class MainWindowViewModel : BindableBase
{
    public MainWindowViewModel(IRegionManager regionManager)
    {
        regionManager.RequestNavigate("ContentRegion", "ViewA");
    }
}

но this.regions.Count равно 0 в RegionManager из Prism

private IRegion GetRegionByName(string regionName)
{
    return this.regions.FirstOrDefault(r => r.Name == regionName);
}

"ContentRegion" определенно существует, потому что оно работает, если я пытаюсь из IModule и я знаю, что RegisterTypes из PrismApplication выполняется раньшеMainWindowViewModel конструктор.

Я не знаю, что мне не хватает, и я не могу найти ответ ни в каких примерах или учебных пособиях.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 26 октября 2018

Лучше всего переопределить OnInitialized в вашем приложении и выполнить навигацию там.Вы можете получить доступ к контейнеру для получения менеджера региона через свойство Container.

Если вы используете загрузчик, вы можете переопределить InitializeModules и перейти туда.

...