C# 隐藏和显示多个WPF窗口
我有三个窗口,一个开始窗口,一个概述窗口和一个详细窗口 当我用概览打开窗口时,开始窗口必须隐藏;当我从概览中打开详细信息时,概览必须隐藏;当我关闭详细信息时,只有概览可能再次可见 这就是我用来隐藏窗口的东西C# 隐藏和显示多个WPF窗口,c#,wpf,show-hide,C#,Wpf,Show Hide,我有三个窗口,一个开始窗口,一个概述窗口和一个详细窗口 当我用概览打开窗口时,开始窗口必须隐藏;当我从概览中打开详细信息时,概览必须隐藏;当我关闭详细信息时,只有概览可能再次可见 这就是我用来隐藏窗口的东西 this.Visibility = Visibility.Collapsed; _frmDetail.showDialog(); this.Visibility = Visibility.Visible; 但当我这样做时,不仅我的概览在我关闭详细信息时可见,而且我的开始屏幕也可见,我只想在
this.Visibility = Visibility.Collapsed;
_frmDetail.showDialog();
this.Visibility = Visibility.Visible;
但当我这样做时,不仅我的概览在我关闭详细信息时可见,而且我的开始屏幕也可见,我只想在我的概览关闭时显示它。在代码中,您将可见性设置为折叠,然后显示一个对话框,然后再次设置可见性。。。 我不太清楚你在做什么,也不太清楚你在叫什么
窗口
在任何情况下,一个简单的解决方案可以是让3个项目相互重叠(例如在同一个网格中),并将它们的可见性设置为属性,例如:ShowMain
、ShowOverview
和ShowDetails
现在,每当需要一个属性时,将该属性设置为Visible,将另两个属性设置为Collapsed,问题就解决了(它们实际上都在同一个窗口中)。将其最小化,并将
ShowInTaskbar
设置为false
this.ShowInTaskbar = false;
this.WindowState = System.Windows.WindowState.Minimized;
这是一个奇怪且可能令人讨厌的(对用户而言)应用程序需求,您在这里询问。在一个
窗口中显示不同的视图比在不同的窗口中显示不同的视图要常见得多,但您仍然有权这样做
您基本上需要一个父类,可能是MainWindow.xaml.cs
?此类可以保存对三个窗口的引用,并负责打开和关闭,或隐藏和显示它们。您可以使用如下方法打开/显示新的窗口
,并隐藏其他窗口:
private void DisplayWindow(Window windowToShow)
{
for (int i = 0; i < Application.Current.Windows.OfType<Window>().
Where(w => w.IsVisible).Count(); i++)
{
Window windowToHide = Application.Current.Windows[i];
windowToHide.Visibility = Visibility.Collapsed;
}
windowToShow.Visibility = Visibility.Visible;
}
我认为这是更好的解决办法。您可以直接访问对象:
private PlaceholderEditorWindow _myWindow;
private void ShowWindow()
{
if (_myWindow == null)
{
_myWindow = new MyWindow();
_myWindow.Show();
}
else
{
_myWindow.Visibility = Visibility.Visible;
}
}
不要关闭窗口,而是使用此选项(在window类中):
private PlaceholderEditorWindow _myWindow;
private void ShowWindow()
{
if (_myWindow == null)
{
_myWindow = new MyWindow();
_myWindow.Show();
}
else
{
_myWindow.Visibility = Visibility.Visible;
}
}
this.Visibility = Visibility.Collapsed