我为一个基本上执行数据库连接的登录WPF应用程序创建了一个项目。现在我正在开发一个需要此登录项目启动的应用程序(始终在WPF中)。我已经将Login.Exe添加到我当前项目中的引用中,但是我找不到强制启动登录的方法,只有在运行我的MainWindow()之后。
我正在尝试这样的事情
namespace Administrator
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Window login = new Login.MainWindow();
login.Show();
}
}
}
我的mainwindow.xaml有空内容,这段代码显示登录表单,但也是一个空白窗口。我怎样才能实现目标?
答案 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容器。