【问题标题】:Add a dialog box on application start up in c# / Xaml在 C#/Xaml 中添加应用程序启动对话框
【发布时间】:2016-11-10 11:52:41
【问题描述】:

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

谢谢你

【问题讨论】:

  • @Basvo 我已经尝试更改 StartupUri 并创建一个全新的页面......但这就像调用一个新页面并获得一个值。我希望打开一个对话框并从用户那里获取价值
  • 也许你可以发布你的代码?
  • @Basvo 我没有代码。如果您对此有任何帮助,请发布。

标签: c# xaml dialog


【解决方案1】:

默认情况下,新 wpf 应用程序(从 Application 派生)中自动生成的“App”类型设置为 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,否则程序将在关闭后终止。

因此,这将是现有文件 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;
      }
   }
}

【讨论】:

  • 能不能分享一下演示文件让我看懂。
  • 我不确定我是否理解你... ;-) 我更新了我的帖子以澄清有人会为此编辑 App.xaml.cs。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
相关资源
最近更新 更多