Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ShowDialog未显示WPF_C#_Wpf_Showdialog - Fatal编程技术网

C# ShowDialog未显示WPF

C# ShowDialog未显示WPF,c#,wpf,showdialog,C#,Wpf,Showdialog,奇怪的是,如果我调试这个窗口,它实际上就不会显示,它只是跳过那些showDialog点,根本不会显示它们。 我的登录显示得非常好 正如您所看到的,我已经在其他线程中尝试了关于这个主题this.MainWindow=MainWindow的各种建议,并将ShutdownMode设置为explicit 完整通话: Current.ShutdownMode = ShutdownMode.OnExplicitShutdown; var dialog = new Login(); dialog.Show

奇怪的是,如果我调试这个窗口,它实际上就不会显示,它只是跳过那些showDialog点,根本不会显示它们。 我的登录显示得非常好

正如您所看到的,我已经在其他线程中尝试了关于这个主题this.MainWindow=MainWindow的各种建议,并将ShutdownMode设置为explicit

完整通话:

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)
{

}
//
///Interaktionslogik für“App.xaml”
/// 
公共部分类应用程序:应用程序
{
私有void应用程序启动(对象发送方、StartupEventArgs e)
{
Current.ShutdownMode=ShutdownMode.OnExplicitShutdown;
var dialog=新登录();
dialog.ShowDialog();
var mainWindow=newmainWindow(dialog.success,DBInteraction.getPID(dialog.txtLoginUser.Text));
mainWindow.ShowDialog();
this.MainWindow=MainWindow;
if(mainWindow.ShowDialog()==true)
{
}
}
}
App.xaml

/// <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)
        {

        }
    }
}

如果您还没有这样做,您需要这样做:

  • 从应用程序XAML文件中删除
    StartupUri

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

  • 在对话框显示后,将
    Show()
    添加到主窗口:

    <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>
    
  • 最后一步。WPF将第一个创建的窗口设置为应用程序中的主窗口。Show in your Login.xaml.cs将主窗口设置为null,以便下一个创建的窗口优先

    private void ApplicationStartup(object sender, StartupEventArgs e)
    {
       Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
       var dialog = new Login();
       dialog.ShowDialog();
       var mainWindow = new MainWindow();
       mainWindow.ShowDialog();
    }
    

  • 这是打字错误吗
    MainWindow.ShowDialog()?因为它看起来应该是
    mainWindow.ShowDialog()
    App.xaml.cs,您从哪里调用此代码。是输入错误是的,将对其进行编辑;App()构造函数?TypeInitialization异常可能在应用程序构造函数中被“吞没”。已添加完整调用。如果我将mainWindown.ShowDialog()分配给一个变量,它总是为null。如果我看一看主窗口属性,它们都在那里,ShowActivated属性甚至是真的。验证
    可见性
    。感谢Olaru的编辑。由于某种原因,代码格式不再适用于我。
    
        if (App.Current.MainWindow == this)
        {
            App.Current.MainWindow = null;
        }