这个问题是,每次在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();
}
答案 0 :(得分:1)
在类级别声明Window
实例是不是很明显?
public class Abc()
{
MainWindow mw = new MainWindow();
///GoogleApi gp = new GoogleApi
private void Show()
{
mw.Show();
//gp.Show();
}
但是,如果窗口是主窗口,上面的代码将不起作用,而是试试这个:
Application.Current.MainWindow.Show();
答案 1 :(得分:0)
我发现另一件事是更好的解决方案,对于某些形式,是使用ShowDialog方法而不是显示/隐藏表单。