繁体   English   中英

看不到已加载、已初始化、可见 window

[英]Can't see Loaded, Initialized, Visible window

简化版

  1. ParentWindow.ShowDialog()
  2. 在 ParentWindow 中单击默认/Bring Up Child Window 按钮
  3. 单击默认/Bring Up Child Window 按钮的事件处理程序执行ParentWindow.Hide()
  4. ChildWindow.ShowDialog()
  5. 单击 ChildWindow 的取消/返回按钮
  6. ParentWindow.Visibility = Visibility.Visible
  7. ParentWindow 无处可寻。

我检查了一下,ParentWindow 为IsInitializedIsLoadedIsVisible返回 true。 我还在我所有的 windows 中使用 Alt-Tabbed 来寻找它——它没有隐藏在任何东西下面。

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


完整版本

  1. parseSettingsWindow.ShowDialog()
  2. 单击 parseSettingsWindow 中的默认/显示修复选择器按钮
  3. 默认/弹出修复选择器按钮的单击事件处理程序执行以下操作: ParentWindow.Hide() b. parseSettingsWindow.GoToNextWindow 标志设置为真(下一个 window 是修复选择器)
  4. while循环执行fixSelector.ShowDialog()因为它尚未加载
  5. 单击 ChildWindow 的取消/返回按钮
  6. 再次进入while循环,转到`case“Parse Settings”部分
  7. parseSettingsWindow.Visibility = Visibility.Visible
  8. parseSettingsWindow 无处可寻

我检查了,当暂停执行时,parseSettingsWindow 为即时 Window 中的IsInitializedIsLoadedIsVisible返回 true break; “解析设置” while循环部分的行。 我还在我所有的 windows 中使用 Alt-Tabbed 来寻找它——它没有隐藏在任何东西下面。

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


主class

    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();
    }

您不能通过Window.Visibility再次将隐藏的.ShowDialog() window 带回来。 您需要再次使用.ShowDialog() 此外,即使再次使用ShowDialog() ,任何具有IsCancel = True属性的按钮都将不再具有该功能,因此需要手动处理对该按钮的按下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM