2011-10-10 61 views
2

我工作的应用程序上有一个主窗口和一些TextBlocks。用户单击TextBlock后,会创建一个新窗口并显示与该TextBlock相关的数据图表。我在不同的线程创建等新的图表Wndow,如下:在不同的线程中创建WPF多个窗口

private void xTB_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     Thread _displayChartThread = new Thread(() => 
     { 
      Window w = new Window() 

      w.Closed += (sender2, e2) =>w.Dispatcher.InvokeShutdown(); 
      w.Show(); 

      System.Windows.Threading.Dispatcher.Run(); 
     }); 

     _displayChartThread.SetApartmentState(ApartmentState.STA); 
     _displayChartThread.IsBackground = true; 
     _displayChartThread.Start(); 
    } 

的问题是,当你有多个图表窗口打开,您关闭主窗口,图表窗户仍处于打开状态,而不是被摧毁。我可以看到图表窗口并不知道主窗口是其所有者,并且我无法将其Owner属性设置为创建图表窗口的线程中的主窗口。

有关如何处理此问题的任何想法?我的意思是一旦主窗口关闭,所有的图表窗口(在不同的线程中创建)也关闭。

在此先感谢。

+0

您是否尝试将新创建的窗口的父窗口设置为主窗口? – MBen

回答

1

您可以在主窗口中保留对子窗口的引用。当主窗口关闭时,可以关闭所有子窗口(使用childWindow.Dispatcher调用CLose

相关问题