Как открыть окно сразу после главного окна приложения - PullRequest
0 голосов
/ 31 октября 2011

Основной интерфейс моего приложения находится в MainWindow.xaml.

Во-первых, что вызывает окно, открываемое приложением при запуске.Похоже, что он не определен как «объект запуска», и, по-видимому, нет никакого кода, который специально запускает это окно.

Я могу сделать так, чтобы окно входа отображалось при запуске приложения в загруженном событии.MainWindow.xaml, определяющий новый «login.xaml» и говорящий, чтобы он отображался как диалог.Однако, если я сделаю это, то MainWindow не появится, пока не будет закрыта учетная запись.

Чего я хочу добиться, так это того, когда мое приложение запускается, появляется MainWindow, а затем поверх него отображается окно Login.

Как это можно сделать?

Ответы [ 3 ]

2 голосов
/ 31 октября 2011
  1. Запуск MainWindow определяется в App.xaml по умолчанию при создании проекта в VS:

    <Application ...
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
    
        </Application.Resources>
    </Application>
    
  2. Создание диалога в событии Loaded должно работать, только не делайте этого в конструкторе, где он еще не загружен.

    Loaded="Window_Loaded"
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        new LoginDialogue().ShowDialog();
    }
    
1 голос
/ 31 октября 2011

Одним из способов может быть добавление обработчика событий Loaded в главное окно, и в этом окне входа в систему:

this.Loaded += LoadedEventHander;


void LoadedEventHander(object sender, RoutedEventArgs e)
{
    // Show Login.xaml here.
}
0 голосов
/ 31 октября 2011
  1. В app.xaml следующая строка определяет окно запуска, вы можете изменить его, если хотите

    StartupUri="MainWindowView.xaml"
    
  2. Если вы следуете MVVM, вы можете привязать команду к событию загрузки Windows, используя System.Windows.Interactivity (в противном случае просто создайте обработчик события, как предлагали другие)

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding MyICommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    
...