WPF:如何在我的应用程序窗口之前显示我的登录窗口(项目导入)?

Dan*_*ori 4 .net c# wpf xaml login

我已经为一个基本上执行数据库连接的登录WPF应用程序创建了一个项目.现在我正在开发一个需要此登录项目启动的应用程序(始终在WPF中).我已将Login.Exe添加到当前项目中的引用中,但我找不到强制启动登录的方法,只有在运行我的MainWindow()之后.

我现在正在尝试这样的事情

namespace Administrator
{ 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Window login = new Login.MainWindow();
            login.Show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的mainwindow.xaml有空内容,这段代码显示了登录表单,但也是一个空白窗口.我怎样才能实现目标?

Ada*_*dam 6

在App.xaml中设置"ShutdownMode"和"StartupUri":

   <Application x:Class="MyApp.App"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:MyApp"
                ShutdownMode="OnExplicitShutdown"
                StartupUri="Login.xaml">
Run Code Online (Sandbox Code Playgroud)

"StartupUri"是您的登录表单.


Mig*_*oom 5

您可以使用以下模式实现此目的.

在App.xaml StartupUri="MainWindow.xaml"Startup="ApplicationStart",在App.xaml.cs中更改并创建ApplicationStart方法.

private void ApplicationStart(object sender, StartupEventArgs e)
{
    Window login = new Login.MainWindow();
    login.Show();

    // Determine if login was successful
    if (login.DataContext is LoginViewModel loginVM)
    {
        if (!loginVM.LoginSuccessful)
        {
            // handle any cleanup and close/shutdown app
        }
    }

    //show your MainWindow
}
Run Code Online (Sandbox Code Playgroud)

我喜欢这种模式,因为您可以在ApplicationStart中设置DI容器或在显示主视图之前设置其他任何内容.