我有两个窗口,一个是“MainWindow”主窗口,另一个是“Login”登录窗口。
显示登录界面的按钮位于“MainWindow”主窗口上。
this.Hide();
Login li = new Login();
li.Show();
在登录窗口有一个按钮用于检查密码,如果密码正确,我该如何显示主窗口?
将一个类型为MainWindow的参数传递给loginwindow。这样,登录窗口就可以引用MainWindow:
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();
}
}
<Grid>
<MainWindow Visibility="{Binding Authorized,
Converter={StaticResource BoolToVisibilityConverter}}"/>
<LoginWindow Visibility="{Binding Authorized,
Converter={StaticResource InvertedBoolToVisibilityConverter}}"/>
</Grid>
这有意义吗?
编辑:显然,网格中的元素实际上不能是 Windows - 这就是我最初关于您使用的布局的问题!