如何在两个WPF窗口之间传输自定义对象

时间:2012-11-15 20:55:32

标签: wpf

我是WPF的新手,任何建议都将受到赞赏。

我有一个WPF应用程序。当用户单击mainWindow的“NEXT”按钮时,它将连接到远程数据库。如果db连接成功,第二个窗口将显示并从数据库中读取更多信息并显示一些内容。我使用类SQLRead来执行数据库连接作业。

public class SQLRead
{
    public string sql;
    SqlConnection conn;
    SqlCommand cmd;
    public int counter, length, dIndex, cdIndex, sdIndex;
    public int[,] data;
    public char[,] cdata;
    public string[,] sdata;

    public SQLRead()
    {
        sql = ""; counter = 0; length = 0;
        dIndex = 0; cdIndex = 0; sdIndex = 0;
    }

    public void NewConnection()
    {
        //if (conn != null) conn.Close();
        conn = new SqlConnection(
            @"Data Source = TheServer\TheInstance
              Integrated Security = SSPI;");
        cmd = new SqlCommand(sql, conn);
        cmd.CommandTimeout = 120;
        cmd.CommandType = CommandType.Text;
    }

    public void Connect()
    {
        conn.Open();
    }

    public void Disconnect()
    {
        conn.Close();
    }

我的问题是如何将SQLRead实例传输到第二个窗口?

感谢。

1 个答案:

答案 0 :(得分:0)

为什么不创建一个应用程序作用域共享变量来挖洞Sqlread对象?然后,您可以从应用程序的任何位置访问它:

class Application
{
    internal static SQLRead sharedSQLRead { get; set; }
}

在MainWindow中:

Application.sharedSQLRead = new SQLRead();

在第二个窗口中:

Application.sharedSQLRead.doWhatever();

这似乎比传递参考更容易....