2017-04-19 89 views
4

我已经做了一个基本上执行数据库连接的登录WPF应用程序的项目。现在我正在开发一个需要此登录项目启动的应用程序(总是在WPF中)。我已将Login.Exe添加到当前项目中的引用中,但我无法找到强制开始登录的方法,只有在运行我的MainWindow()之后才能找到。WPF:如何在我的应用程序窗口之前显示我的登录窗口(项目导入)?

我目前正试图这样

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

我mainwindow.xaml东西有空内容,而这一段代码就显示登录形式,也是一个空白的窗口。我怎样才能实现我的目标?

+0

登录窗口是“Window”还是“UserControl”? – Default

回答

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(); 

    //show your MainWindow 
} 

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

+0

这完全适合我。非常感谢你。 –

+0

欢迎您:)如果您在工作时接受答案,会很好。 –

+0

现在只是另一个问题。由于我的登录项目是在MVVM模式下开发的,我需要一个变量,使用类似以下方法访问登录虚拟机是正确的:VMinstance = login.Datacontext作为ViewModel? –

5

设置在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

可能也是如此,但在我看来,当您的登录窗口必须打开主窗口时,它并不是最简单的编程方式。该逻辑不依赖于登录窗口。这就是为什么我优先考虑ApplicationStart方法(就像在我的答案中所示)。 –

相关问题