Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 隐藏和显示多个WPF窗口_C#_Wpf_Show Hide - Fatal编程技术网

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