在只有一个实例的窗口之间切换(跟进)

时间:2018-04-07 13:36:18

标签: c# wpf

所以基本上我的问题与以下问题中的问题完全相同 Switching between windows with only one instance of them

无论其 我希望在Windows之间切换时释放内存。 如果我正确理解你是从MainWindow转到Window1你正在创建一个新的Window1实例,如果你回去(到MainWindow)有一个引用所以没有创建新实例。但是如果你再次点击该按钮转到Window1然后它会创建一个新的Window1实例,从而浪费内存。 所以我的问题是我如何释放空间(或者当我在窗口之间切换多次时使用相同的实例)

使用之前已经回答过的问题的道歉(似乎该解决方案并不能完全满足我的问题,或者我可能缺乏一些知识)

谢谢

1 个答案:

答案 0 :(得分:0)

如果你想保留状态,那么显而易见的方法是第一次实例化给定的窗口,将该实例存储在某处,然后在下次使用它。 我可能会这样做的方式是使用字典。 使用窗口类型作为键,将实例用作值。

这是基于我在一个与usercontrols一起使用的示例中的一些代码。 几乎只是用于usercontrol的交换窗口:

    private void Navigate (Type viewType)
    {
        Window win;
        if (Views.ContainsKey(viewType))
        {
            win = Views[viewType];
        }
        else
        {
            win = (UserControl)Activator.CreateInstance(viewType);
            Views[viewType] = win;
        }
        win.Show();
    }
    private Dictionary<Type, Window> Views = new Dictionary<Type, Window>();
}

你会得到类似的窗口类型:

 xxxx = typeof(Window1);

您仍然希望确保隐藏窗口而不是关闭窗口。