WPF.如何隐藏/显示主窗口从另一个窗口
本文关键字:窗口 显示 另一个 何隐藏 隐藏 WPF | 更新日期: 2023-09-27 18:03:29
我有两个windows主窗口和登录。显示登录的按钮位于mainWindow
this.Hide();
Login li = new Login();
li.Show();
登录窗口是检查密码的按钮,如果密码正确,我如何显示主窗口?
传递一个参数给MainWindow类型的loginwindow。这允许登录窗口有一个对主窗口的引用:
this.Hide();
Login li = new Login(this);
li.Show();
和登录窗口:
private MainWindow m_parent;
public Login(MainWindow parent){
m_parent = parent;
}
//Login Succesfull function
private void Succes(){
m_parent.Show();
}
第一个答案是好的,但它会创建一个新的空窗口要避免这个问题(重定向到先前创建的窗口),只需像这样修改构造函数
public Login(MainWindow parent):this()
{
m_parent = parent;
}
....
this.Hide();
Login li = new Login();
if(li.ShowDialog() == DialogResult.OK){
//Do something with result
this.Show();
}
确保在你的登录页面中有这样的内容:
void OnLogin(){
if(ValidateLogin()){
this.DialogResult = DialogResult.OK;
this.Close();
}
}
你的UI使用什么样的布局等?如果你使登录窗口一个模态对话框,那么你需要隐藏主窗口吗?
或者,您可以有某种"成功登录"标志,并将每个窗口的可见性绑定到此值-使用转换器获得所需的结果?类似以下语句:
<Grid>
<MainWindow Visibility="{Binding Authorized,
Converter={StaticResource BoolToVisibilityConverter}}"/>
<LoginWindow Visibility="{Binding Authorized,
Converter={StaticResource InvertedBoolToVisibilityConverter}}"/>
</Grid>
明白了吗?
编辑:显然,网格中的元素实际上不能是Windows -因此我最初的问题关于你正在使用的布局!