Перейдите к представлению по умолчанию, когда приложение загружено с использованием Prism 7 в WPF

Я следую за примерами кода, предоставленными в https://github.com/PrismLibrary/Prism-Samples-Wpf/blob/master/17-BasicRegionNavigation

Я хочу добиться следующего результата при запуске приложения (без явного нажатия кнопки "Навигация для просмотра A"). кто нибудь знает как это сделать?

Я пробовал добавлять Navigate("ViewA"); после этой строки. Однако я не могу получить желаемый результат. Это потому, что модуль не был инициализирован?

Благодарю.

3 ответа

Вы добавили свой модуль в каталог модулей с помощью метода переопределения ConfigureModuleCatalog? посмотрите на здесь

В конце концов я решаю, добавив следующий код в MainWindow.xaml.cs

public partial class MainWindow
{
    IRegionManager _regionManager;
    public MainWindow()
    {
        InitializeComponent();
        _regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
        RegionManager.SetRegionManager(ContentRegion, _regionManager);
        Loaded += MainWindow_Loaded;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        _regionManager.RequestNavigate("ContentRegion", "ViewA");
    }
}

Получите идею от: https://github.com/MahApps/MahApps.Metro/issues/1020

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

Я нашел два пути:

1. определяет вид по умолчанию

Это можно решить в CreateShell()- переопределить в App-Учебный класс.

Это мое CreateShell-Метод:

      /// <inheritdoc />
protected override Window CreateShell()
{
    var window = this.Container.Resolve<MainWindow>();

    window.Loaded += (sender, args) =>
    {
        var manager = this.Container.Resolve<IRegionManager>();

        manager.RequestNavigate("ContentRegion", "ViewA");
    };

    return window;
}

2. ViewModel определяет представление по умолчанию

Добавьте конструктор в MainWindowViewModelэто выглядит так:

      public MainWindowViewModel(IRegionManager regionManager)
{
    regionManager.RegisterViewWithRegion("ContentRegion", "ViewA");
}
Другие вопросы по тегам