我是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的所有元素。如果我单击第一个窗口中的按钮,列表将显示与第二个窗口中相同的结果。
答案 0 :(得分:0)
问题解决了!!我不在乎,把所有的字段都设置为静态。这就是他们共享的原因。删除所有静态术语后,它们现在完美运行。