【问题标题】:Hide and show multiple WPF Windows隐藏和显示多个 WPF 窗口
【发布时间】:2013-11-19 10:50:11
【问题描述】:

我有三个窗口,一个开始窗口,一个带有概览的窗口和一个带有详细信息的窗口

当我打开带有概览的窗口时,开始窗口必须隐藏,当我从概览中打开详细信息时,概览必须隐藏,当我关闭详细信息时,只有概览可能会再次可见。

这是我用来隐藏窗口的东西

this.Visibility = Visibility.Collapsed;
_frmDetail.showDialog();
this.Visibility = Visibility.Visible;

但是当我这样做时,不仅我的概览在我关闭详细信息时变得可见,而且我的开始屏幕也变得可见,我只想在我的概览关闭时显示它

【问题讨论】:

标签: c# wpf show-hide


【解决方案1】:

这是您在此处询问的一个奇怪且可能令人讨厌的(对用户而言)应用程序要求。在一个 Window 中显示不同的视图比显示不同的 Windows 更常见,但您仍然有权这样做。

你基本上需要一个父类,也许是MainWindow.xaml.cs?这个类可以持有对三个Windows 的引用,并负责打开和关闭,或者隐藏和显示它们。你可以有一个类似这样的方法来打开/显示一个新的Window 并隐藏其他的:

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

然后每当你需要显示一个新的Window,你可以这样称呼它:

DisplayWindow(_frmDetail);

【讨论】:

    【解决方案2】:

    在您的代码中,您将可见性设置为折叠,然后显示一个对话框,然后再次设置可见性... 我不太确定你在做什么,也不知道你叫什么window

    在任何情况下,一个简单的解决方案是让 3 个项目相互重叠(例如在同一个网格中),并将它们的可见性设置为属性,例如:ShowMainShowOverviewShowDetails

    现在,当您需要一个时,将该属性设置为 Visible,将另外 2 个设置为 Collapsed,您的问题就解决了(这些都在同一个窗口中)。

    【讨论】:

      【解决方案3】:

      将其最小化并将ShowInTaskbar设置为false。

              this.ShowInTaskbar = false;
              this.WindowState = System.Windows.WindowState.Minimized;
      

      【讨论】:

        【解决方案4】:

        我认为这是更好的解决方案。您直接访问该对象:

        private PlaceholderEditorWindow _myWindow;
        
        private void ShowWindow()
        {
            if (_myWindow == null)
            {
                _myWindow = new MyWindow();
                _myWindow.Show();
            }
            else
            {
                _myWindow.Visibility = Visibility.Visible;
            }
        }
        

        不要关闭窗口,而是使用它(在 Window 类中):

        this.Visibility = Visibility.Collapsed
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-01
          • 2010-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多