![](/img/trans.png)
[英]Windows Store app: UIElement not rendered completly when using RenderTransform
[英]WPF: When is a TabItem actually loaded, rendered and completly ready?
在WPF应用程序中,我有一个类用作QuickTime的包装。 它提供了我需要的所有特定或简化的功能。 要发挥作用,它需要创建一个QuickTime ActiveX控件实例,并将其放置在有效的Windows窗体窗口中。 我的应用程序是WPF,构造函数的工作方式如下:
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
对象的构造函数试图将AxQTControl
放在提供的WindowsFormsHost
,但是,在尚未显示的选项卡上,QuickTime控件抛出InvalidActiveXStateException
。 我认为任何ActiveX / COM控件都会抛出该错误; 我猜想WindowsFormsHost
处于某种“无效的ActiveX状态”,直到单击并显示其父选项卡。
我的问题是:应该在哪个事件处理程序(在哪个对象上)构造播放器? WindowsFormsHost何时最初处于不活动状态的TabItem内准备就绪并已加载,就像Window_Loaded触发时一样?
我想到的第一个解决方案是在处理TabItem_GotFocus事件的方法中创建播放器。 目前工作正常,但是如果对此解决方案有任何疑问,我想知道:)
另外,由于GotFocus是一个如此普遍的事件,因此我很难理解为什么WinForms主机确实可以这样做。 答案是否只是像“ tabitem的内容在获得焦点时呈现,就像窗口在加载时呈现”那样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.