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

时间:2017-04-19 11:29:04

标签: c# .net 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();
        }
    }
}

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

2 个答案:

答案 0 :(得分: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">

“StartupUri”是您的登录表单。

答案 1 :(得分: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
}

我喜欢这种模式,因为你可以,例如在显示主视图之前,在ApplicationStart或您想要的任何其他设置中设置您的DI容器。