问题在于,每次在 Windows 之间移动时,都会创建一个新的对象实例并添加到内存堆(进程内存,不完全确定,如果术语错误请更正!)。在我看来,这是一种浪费和糟糕的品味,我想知道是否还有其他解决方案,因为我确信之前有人考虑过。我不喜欢 Pages,对于桌面应用程序,导航按钮看起来太像 Windows 7 中的 IE。
我见过这样的解决方案(我意识到我没有使用好的命名约定,但我只是为了好玩而修补 WPF):
public GoogleAPI()
{
InitializeComponent();
Closing += GoogleAPI_Closing;
}
private void GoogleAPI_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
MainWindow main = new MainWindow();
main.Show();
}
这与 MainWindow 一起使用,在按钮事件中的 MainWindow 中创建一个新的 GoogleAPI(我的窗口名称)实例。
private void Button1_Click(object sender, RoutedEventArgs e)
{
GoogleAPI googleapi = new GoogleAPI();
googleapi.Show();
this.Hide();
}
在类级别声明 Window
实例不是很明显吗?
public class Abc()
{
MainWindow mw = new MainWindow();
///GoogleApi gp = new GoogleApi
private void Show()
{
mw.Show();
//gp.Show();
}
但是,如果窗口是主窗口,上面的代码将不起作用,而是试试这个:
Application.Current.MainWindow.Show();
我是一名优秀的程序员,十分优秀!