ShowDialog没有显示WPF

时间:2015-06-02 21:30:56

标签: c# wpf showdialog

Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;

var dialog = new Login();

dialog.ShowDialog();

var mainWindow = new MainWindow(dialog.success, DBInteraction.getPID(dialog.txtLoginUser.Text));

mainWindow.ShowDialog();

this.MainWindow = mainWindow;

if (mainWindow.ShowDialog() == true)
{

}

奇怪的是,如果我调试它,窗口永远不会显示它只是跳过那些showDialog点并且根本不显示它们。 我的登录完全正常。

正如您所看到的,我已经在其他主题中尝试了各种有关此主题的建议.MainWindow = mainWindow并将ShutdownMode设置为显式。

完整电话:

/// <summary>
/// Interaktionslogik für "App.xaml"
/// </summary>
public partial class App : Application
{
    private void ApplicationStart(object sender, StartupEventArgs e)
    {

        Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
        var dialog = new Login();

        dialog.ShowDialog();

        var mainWindow = new MainWindow(dialog.success, DBInteraction.getPID(dialog.txtLoginUser.Text));

        mainWindow.ShowDialog();

        this.MainWindow = mainWindow;

        if (mainWindow.ShowDialog() == true)
        {

        }
    }
}

的App.xaml

<Application x:Class="Boosting.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Startup="ApplicationStart"
         ShutdownMode="OnExplicitShutdown">
<Application.Resources>

</Application.Resources>
</Application>

1 个答案:

答案 0 :(得分:0)

如果您没有这样做,这就是您需要做的事情:

  1. 从Application XAML文件中删除StartupUri

  2. 在应用XAML中设置启动处理程序:

  3. 在对话框显示后将Show()添加到MainWindow:

    private void ApplicationStartup(object sender, StartupEventArgs e)
    {
       Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
       var dialog = new Login();
       dialog.ShowDialog();
       var mainWindow = new MainWindow();
       mainWindow.ShowDialog();
    }
    
  4. 最后一步。 WPF在应用程序中将第一个创建的窗口设置为MainWindow。在Login.xaml.cs中显示将MainWindow设置为null,以便创建的下一个窗口优先。

        if (App.Current.MainWindow == this)
        {
            App.Current.MainWindow = null;
        }