WPF中具有不同实例的多个相同窗口

时间:2014-07-08 17:41:38

标签: c# wpf windows visual-studio-2013

我是WPF的新手,并且已经编写了一个程序,在ListView框中显示一段时间的结果列表。如果单击列表中的元素,则框中的每个元素都是可单击的,并且将显示详细信息窗口。我希望这个程序能够同时显示不同元素的几个细节窗口。

现在我只有这个:

DetailWindow w = new DetailWindow();
w.show();

这两行是在元素点击事件监听器中。每次单击元素时,都会弹出一个新窗口,但它始终指向与旧窗口相同的实例(屏幕上的所有详细信息窗口共享同一个实例)。所有变量和字段都具有相同的值。

有没有办法强制它每次点击元素时创建一个不同的窗口实例?非常感谢!

在详细信息窗口的构造函数中:(USER_ID是详细信息窗口中的字段)

USER_ID = MainWindow.getUserID(); // Assume getUserID() always returns correct ID

详细信息窗口中有一个按钮,用于启动SQL查询 在Detail Window的Button监听器中:

// Get info from database by using the USER_ID field
string SQL_CMD = "..."; 
... // Bunch of SQL stuff
dt.Load(reader); // dt is a DataTable which stores the results from reader

foreach(element in dt)
    RESULT_LIST.Add(...) // Adds data into RESULT_LIST from dt. RESULT_LIST is a field.

DetailViewList.ItemSource = RESULT_LIST; // DetailViewList is the name of the ListView

这在开始时正常工作。单击按钮后,第一个窗口具有正确的user1列表。弹出的第二个窗口具有正确的用户 - user2,但是第二个窗口中的列表将在按钮单击后具有user1和user2的所有元素。如果我单击第一个窗口中的按钮,列表将显示与第二个窗口中相同的结果。

1 个答案:

答案 0 :(得分:0)

问题解决了!!我不在乎,把所有的字段都设置为静态。这就是他们共享的原因。删除所有静态术语后,它们现在完美运行。