在c#/ Xaml中启动应用程序时添加一个对话框

时间:2016-11-10 11:52:42

标签: c# xaml dialog

我需要在启动应用程序之前获取电子邮件ID和密码的应用程序。我需要获取此信息进行处理,应用程序是使用XAML / C#构建的吗?如何使用自定义对话框实现此目的?

谢谢

1 个答案:

答案 0 :(得分:0)

默认情况下,类型" App"在新的wpf应用程序中自动生成(从Application派生)设置为Startup对象(请参阅应用程序属性)。你可以......

a)用您自己的类型替换此对象,该类型实例化App并在提供凭据后调用App.run()。请务必使用[STAThread]声明您的输入方法。

  [STAThread]      
  public static int Main()
  {
     MyOperations();
     var app = new App();
     app.Run();
  }

b)在App.xaml.cs中覆盖OnStartup:

  protected override void OnStartup(StartupEventArgs e)
  {
     base.OnStartup(e);
     MyOperations();
  }
编辑:我可能错过了这一点。如果您的目标是在显示主窗口之前显示另一个WPF窗口,则可以使用选项b),但是在显示登录掩码之前可能必须修改Application.Current.ShutdownMode,否则程序将在关闭后终止。 / p>

因此,这将是现有文件App.xaml.cs的内容(它隐藏在解决方案资源管理器中,您必须展开App.xaml才能看到它)。

using System.Windows;

namespace WpfApplication1
{
   /// <summary>
   /// Interaction logic for App.xaml
   /// </summary>
   public partial class App : Application
   {
      protected override void OnStartup(StartupEventArgs e)
      {
         base.OnStartup(e);
         ShutdownMode = ShutdownMode.OnExplicitShutdown;
         var loginWindow = new Login();
         loginWindow.ShowDialog();
         if (!loginWindow.LoggedIn)
         {
            Shutdown();
            return;
         }
         ShutdownMode = ShutdownMode.OnLastWindowClose;
      }
   }
}