2011-10-10 95 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