在我的WPF應用程序,我有作爲的QuickTime周圍的包裝類。它提供了我需要的所有特定或簡化功能。要運行,它需要創建一個QuickTime的ActiveX控件的實例,並將其放置在有效的Windows窗體中。我的應用程序是WPF,構造器的工作原理是這樣的:WPF:TabItem何時實際加載,呈現並完全準備好?
public VideoPlayerQT(WindowsFormsHost wfHost) {
AxQTControl qtControl = new AxQTControl();
wfHost.Child = qtControl;
}
現在在主窗口中,我使用的球員是這樣的:
private VideoPlayerQT videoPlayer;
private void MainWindow_Loaded(object sender, RoutedEventArgs e) {
this.videoPlayer = new VideoPlayerQT(myWinFormsHost);
}
這工作,直到我把WindowsFormsHost一個TabControl內。我想從一開始就沒有正確顯示的標籤上。
這將導致一個奇怪的現象:我VideoPlayerQT
對象的構造函數試圖將提供的WindowsFormsHost
,Hwever,是一個還未顯示選項卡上,QuickTime的控制拋出InvalidActiveXStateException
內AxQTControl
。我認爲任何ActiveX/COM控件都會拋出它;我猜WindowsFormsHost
是在一些「無效的ActiveX狀態」,直到其父選項卡點擊和顯示。
我的問題是:在該事件處理程序(上對象)要建設的播放器? 準備並加載最初處於非活動狀態的TabItem中的WindowsFormsHost何時與Window_Loaded激發時相同?
您是否嘗試過的「裝」事件? :) – Sisyphe