簡體   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