重新生成ActiveX控件

时间:2012-07-31 16:44:01

标签: c# .net wpf activex

WPF中是否可以将ActiveX控件移动到可视树中的其他位置?我有一个控件,我想动态移动成另一个小部件的孩子。

如果这不可能有办法制作控件的副本并将其放在其他地方吗?我以前的尝试根本没用。

1 个答案:

答案 0 :(得分:1)

这是一个类比,它不是一个伟大的,但希望它推动了重点:

想象一下,您已经使用LEGO构建了一个场景。你还有一块扁平的铝片,上面有一个图像,你想把它插入你的一个乐高层下面,这样它就成了场景的一部分。你不能这样做,因为铝中没有钉子和孔。它不会粘在底层,顶部的乐高不会粘住。

这里的类比分解,因为在现实世界中,你可以使用胶水或其他东西来使其发挥作用。

WPF提供了一个托管单个DirectX表面的单个窗口对象,在该表面上呈现每个控件(上面的LEGO)。 ActiveX控件(或Winforms控件)每个都需要一个单独的系统窗口对象(铝板)。无法在DirectX表面上呈现的元素之间放置系统窗口。

这两种技术不混合(或至少不混合)。你要么必须忍受这个事实并安排有限制的事情,要么你需要改变技术。使用Winforms构建应用程序(其中每个控件都是系统窗口),或创建/查找提供与您正在使用的此ActiveX控件相同功能的WPF控件。