如何在WPF中将数据从Window传递到MainWindow?

时间:2017-10-23 06:19:52

标签: c# wpf window

我是新手编程,现在我的新登录窗口有问题。 我创建了一个用于登录我的服务器数据库的新窗口,但在我的主窗口中如何调用它?我不知道如何更好地绘制它。

在我的登录窗口中:

using MyS_Database;
MyServer_Database server;

public void LoginButton_Click(object sender, RoutedEventArgs e)
{
    server = new MyServer_Database("ClientName","ServerIP","","",UserID.Text,UserPassword.Password.ToString(),"01",MyServer_Database.LoginType.User,out serverresult)
    swith(serverresult)
    {
    case 0:
    Mainwindow.Show();
    this.Close();
    break;

    default:
    Environment.Exit(0);
    }
}

但是当我在我的MainWindow上调用一个与服务器通信的方法时,我必须将它称为:

server.GetDataFromUserList();

但它无法识别服务器,我尝试了类似 Win1.server 或类似的东西,但我失败了。 我怎么能通过它?提前谢谢!

1 个答案:

答案 0 :(得分:1)

快速回答是让服务器像这样公开:

public MyServer_Database Server { get; set; }

然后您可以在MainWindow中使用:

进行调用
Win1.Server.GetDataFromUserList();

但这不是一个好方法。更好的方法是通过MVVM抽象出不同类中的这类操作。阅读有关MVVM的更多信息,您将找到很好的方法。

修改

你还应该做以下两件事之一:

  1. 请勿关闭Win1代替this.Hide();

  2. MyServer_Database中的MainWindow实例传递给Win1的构造函数。

  3. 你应该把它放在MainWindow

    public MyServer_Database Server { get; set; }
    

    并在需要时拨打:

    var Win1 = new LoginWindow(Server);
    

    然后您可以访问Server

    中的MainWindow对象