隐藏 Window 的实例
Hide an Instance of a Window
如何隐藏在一个方法中创建的 Window 的实例,在另一个方法中?
我有一个带有按钮 "Register" 的登录 Window,当您单击该按钮时,Register-Window 正在打开,而 Login-Window 正在隐藏(工作正常)。
现在的问题是,我在 Register-Window 上有一个按钮 "Back",它应该隐藏 Register Window 并显示 Login Window。
我可以用 "Application.Current.MainWindow.Show();" 显示登录 Window,但我不知道如何隐藏注册 -Window。通常我会选择 "Regis.Hide()",但我不能这样做,因为我在方法中有 Regis 的实例,它打开了寄存器 Window。
我明白,如果我在第二个方法中创建第二个实例并隐藏它,那将不起作用,因为现在有 2 个单独的实例。
但是正如我所说,我也不知道该怎么做。
OpenRegistrationGui:
ICommand _RegisterBack;
public void Open()
{
Application.Current.MainWindow.Hide();
Register regis = new Register();
regis.Show();
}
public ICommand RegisBackCommand
{
get
{
if (_RegisterBack == null)
{
_RegisterBack = new RelayCommand(
param => Back()
);
}
return _RegisterBack;
}
}
public void Back()
{
Application.Current.MainWindow.Show();
//I Want to Hide the Regis here, but i cant use the Instance from above.
}
我的视图模型:
OpenRegistrierungsGUI RegisGUI = new OpenRegistrierungsGUI();
public ICommand RegisBack
{
get => RegisGUI.RegisBackCommand;
set => RegisBack = RegisGUI.RegisBackCommand;
}
Open() 方法也是如此。
我想要的结果只是寄存器 Window 隐藏,登录 Window 显示。
这将通过使 regis
成为整个 class 可以访问的成员变量来解决您的问题...
private Register regis;
public void Open()
{
Application.Current.MainWindow.Hide();
// Create the register window, if it doesn't exist
if (regis == null)
{
regis = new Register();
}
regis.Show();
}
public void Back()
{
// hide the register window, if it exists
if (regis != null)
{
regis.Hide();
}
Application.Current.MainWindow.Show();
}
有不同的方法可以做到这一点,但这个方法确保只有一个寄存器实例 window 并为您提供所需的 show/hide 能力。
只需使用 regis.hide();
希望它对你有用。
private Register regis;
public void Back()
{
Application.Current.MainWindow.Show();
regis.hide();
}
此处您想将一个函数变量用于另一个
全局声明 regis 而不是在您第一次使用它的方法中初始化它。
In this way there will be only one instance of regis .
现在你可以
regis.Hide()
或
regis.Show()
在您的任何方法中 class
我找到了解决方案:
我启动了 Open() 方法(效果很好)。
当我想触发 Back() 方法时,我不小心创建了一个 "OpenRegistrationGui" 的实例并试图关闭它,但显然不能,因为它是另一个实例。
我将 属性 "RegisBackCommand" 设置为静态并现在直接从 ViewModel 触发它,现在可以正常工作了。
无论如何...谢谢大家的快速回答和帮助!!!
如何隐藏在一个方法中创建的 Window 的实例,在另一个方法中?
我有一个带有按钮 "Register" 的登录 Window,当您单击该按钮时,Register-Window 正在打开,而 Login-Window 正在隐藏(工作正常)。 现在的问题是,我在 Register-Window 上有一个按钮 "Back",它应该隐藏 Register Window 并显示 Login Window。 我可以用 "Application.Current.MainWindow.Show();" 显示登录 Window,但我不知道如何隐藏注册 -Window。通常我会选择 "Regis.Hide()",但我不能这样做,因为我在方法中有 Regis 的实例,它打开了寄存器 Window。
我明白,如果我在第二个方法中创建第二个实例并隐藏它,那将不起作用,因为现在有 2 个单独的实例。 但是正如我所说,我也不知道该怎么做。
OpenRegistrationGui:
ICommand _RegisterBack;
public void Open()
{
Application.Current.MainWindow.Hide();
Register regis = new Register();
regis.Show();
}
public ICommand RegisBackCommand
{
get
{
if (_RegisterBack == null)
{
_RegisterBack = new RelayCommand(
param => Back()
);
}
return _RegisterBack;
}
}
public void Back()
{
Application.Current.MainWindow.Show();
//I Want to Hide the Regis here, but i cant use the Instance from above.
}
我的视图模型:
OpenRegistrierungsGUI RegisGUI = new OpenRegistrierungsGUI();
public ICommand RegisBack
{
get => RegisGUI.RegisBackCommand;
set => RegisBack = RegisGUI.RegisBackCommand;
}
Open() 方法也是如此。
我想要的结果只是寄存器 Window 隐藏,登录 Window 显示。
这将通过使 regis
成为整个 class 可以访问的成员变量来解决您的问题...
private Register regis;
public void Open()
{
Application.Current.MainWindow.Hide();
// Create the register window, if it doesn't exist
if (regis == null)
{
regis = new Register();
}
regis.Show();
}
public void Back()
{
// hide the register window, if it exists
if (regis != null)
{
regis.Hide();
}
Application.Current.MainWindow.Show();
}
有不同的方法可以做到这一点,但这个方法确保只有一个寄存器实例 window 并为您提供所需的 show/hide 能力。
只需使用 regis.hide();
希望它对你有用。
private Register regis;
public void Back()
{
Application.Current.MainWindow.Show();
regis.hide();
}
此处您想将一个函数变量用于另一个
全局声明 regis 而不是在您第一次使用它的方法中初始化它。
In this way there will be only one instance of regis .
现在你可以
regis.Hide()
或
regis.Show()
在您的任何方法中 class
我找到了解决方案:
我启动了 Open() 方法(效果很好)。 当我想触发 Back() 方法时,我不小心创建了一个 "OpenRegistrationGui" 的实例并试图关闭它,但显然不能,因为它是另一个实例。 我将 属性 "RegisBackCommand" 设置为静态并现在直接从 ViewModel 触发它,现在可以正常工作了。
无论如何...谢谢大家的快速回答和帮助!!!