看不到“已加载,已初始化,可见”窗口

时间:2019-11-18 23:16:56

标签: c# wpf

简体版本

  1. ParentWindow.ShowDialog()
  2. 在ParentWindow中单击默认/调出子窗口按钮
  3. 默认的点击事件处理程序/“调出子窗口”按钮确实ParentWindow.Hide()
  4. ChildWindow.ShowDialog()
  5. 单击ChildWindow的“取消/返回”按钮
  6. ParentWindow.Visibility = Visibility.Visible
  7. 找不到ParentWindow。

我检查了一下,ParentWindow为IsInitializedIsLoadedIsVisible返回了true。我还在所有窗户上按Alt键轻敲来寻找它-它没有藏在任何东西下面。

为什么我在任何地方都看不到ParentWindow?


完整版本

  1. parseSettingsWindow.ShowDialog()
  2. 在parseSettingsWindow中单击“默认/启动修复选择器”按钮
  3. 单击默认的“事件处理程序” /“启动修复选择器”按钮可以:  一种。 ParentWindow.Hide()  b。 parseSettingsWindow.GoToNextWindow标志设置为true(下一个窗口是“修复选择器”)
  4. while循环执行fixSelector.ShowDialog(),因为尚未加载
  5. 单击ChildWindow的“取消/返回”按钮
  6. 再次进入
  7. while循环,进入“大小写”“分析设置”部分
  8. parseSettingsWindow.Visibility = Visibility.Visible
  9. parseSettingsWindow在任何地方都找不到

我检查了一下,当在“解析设置”的IsInitialized行暂停执行时,parseSettingsWindow在即时窗口中为IsLoadedIsVisiblebreak;返回true while循环部分。我还在所有窗户上按Alt键轻敲来寻找它-它没有藏在任何东西下面。

为什么在任何地方都看不到parseSettingsWindow?


主班

    public static bool UserPromptedSettingsWereWrittenToModel(ref Model model, ref ActiveFixes activeFixes, ref ActiveReports activeReports)
    {
        var viewModel = new ViewModel();

        var parseSettingsWindow = new ViewPlusViewModel.ParseSettings();
        parseSettingsWindow.InitializeComponent();

        var fixSelector = new ViewPlusViewModel.FixSelector(viewModel);
        fixSelector.InitializeComponent();

        var seeAllFixesReports = new ViewPlusViewModel.SeeAllFixesReports();
        seeAllFixesReports.InitializeComponent();


        parseSettingsWindow.ShowDialog();
        var nextWindowToOpen = "Fix Selector";


        while (parseSettingsWindow.GoToNextWindow == true && fixSelector.GoToNextWindow == false)
        {
            switch(nextWindowToOpen)
            {
                case "Fix Selector":
                    if (fixSelector.IsLoaded)
                    {
                        fixSelector.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        fixSelector.ShowDialog();
                    }

                    nextWindowToOpen = "Parse Settings";
                    break;
                case "Parse Settings":
                    parseSettingsWindow.GoToNextWindow = false;
                    parseSettingsWindow.Visibility = Visibility.Visible;
                    nextWindowToOpen = "Fix Selector";
                    break;
            }
        }


        if (parseSettingsWindow.GoToNextWindow == false)
        {
            parseSettingsWindow.Close();
            if (fixSelector.IsLoaded) fixSelector.Close();
            if (seeAllFixesReports.IsLoaded) { seeAllFixesReports.Close(); }
            return false;
        }

        parseSettingsWindow.Close();
        fixSelector.Close();
        if (seeAllFixesReports.IsLoaded) { seeAllFixesReports.Close(); }

        return true;
    }

ParseSettingsWindow.cs

    private void GoToNextWindow_Click(object sender, RoutedEventArgs e)
    {
        this.GoToNextWindow = true;
        this.Hide();
    }

1 个答案:

答案 0 :(得分:0)

您无法通过.ShowDialog()重新打开隐藏的Window.Visibility窗口。您需要再次使用.ShowDialog()。此外,即使再次使用IsCancel = True,具有ShowDialog()属性的所有按钮也将不再具有该功能,因此对该按钮的按下将需要手动进行处理。