[英]Can't see Loaded, Initialized, Visible window
简化版
ParentWindow.ShowDialog()
ParentWindow.Hide()
ChildWindow.ShowDialog()
ParentWindow.Visibility = Visibility.Visible
我检查了一下,ParentWindow 为IsInitialized
、 IsLoaded
和IsVisible
返回 true。 我还在我所有的 windows 中使用 Alt-Tabbed 来寻找它——它没有隐藏在任何东西下面。
为什么我在任何地方都看不到 ParentWindow?
完整版本
parseSettingsWindow.ShowDialog()
ParentWindow.Hide()
b. parseSettingsWindow.GoToNextWindow 标志设置为真(下一个 window 是修复选择器)while
循环执行fixSelector.ShowDialog()
因为它尚未加载while
循环,转到`case“Parse Settings”部分parseSettingsWindow.Visibility = Visibility.Visible
我检查了,当暂停执行时,parseSettingsWindow 为即时 Window 中的IsInitialized
、 IsLoaded
和IsVisible
返回 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.