【问题标题】:ShowDialog not showing WPFShowDialog 不显示 WPF
【发布时间】:2015-06-02 21:30:56
【问题描述】:
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 点并且根本不显示它们。 我的登录显示非常好。

如您所见,我已经在其他线程中尝试了有关此主题的各种推荐 this.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>

【问题讨论】:

  • 这是一个错字MainWindow.ShowDialog();?因为它看起来应该是mainWindow.ShowDialog() 你从哪里调用这段代码?
  • “App.xaml.cs”。是错字,是的,将对其进行编辑。
  • 在 App.xaml.cs 中,Application_Startup(); App() 构造函数? TypeInitialization 异常可能会在 App 构造函数中被“吞噬”。
  • 添加了完整的通话。如果我将 mainWindown.ShowDialog() 分配给一个 var,它始终为空。如果我看一下 mainWindow 属性,它们都在那里 ShowActivated 甚至是真的bit.ly/1ETHEBr
  • 验证Visibility

标签: c# wpf showdialog


【解决方案1】:

这是你需要做的,以防你还没有这样做:

  1. 从应用程序 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。 Show inside your Login.xaml.cs 将 MainWindow 设置为 null,以便创建的下一个窗口优先。

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

【讨论】:

  • 感谢 Olaru 进行编辑。由于某种原因,代码格式对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多