C# 重新设置ActiveX控件的父级

C# 重新设置ActiveX控件的父级,c#,.net,wpf,activex,C#,.net,Wpf,Activex,在WPF中,是否可以将ActiveX控件移动到可视化树中的其他位置?我有一个控件,我想动态移动它成为另一个小部件的子控件 如果这是不可能的,是否有一种方法可以复制控件并将其放置在其他地方?我以前的尝试根本不起作用。这里有一个类比,它不是一个很好的类比,但希望它能让我明白这一点: 假设您使用乐高积木构建了一个场景。你也有一个平面的铝片,上面有一个图像,你想把它插入一个乐高积木层下面,这样它就成为了场景的一部分。你不能这样做,因为铝上没有钉子和孔。它不会粘到底层,上面的乐高玩具也不会粘 这个类比在这

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


如果这是不可能的,是否有一种方法可以复制控件并将其放置在其他地方?我以前的尝试根本不起作用。

这里有一个类比,它不是一个很好的类比,但希望它能让我明白这一点:

假设您使用乐高积木构建了一个场景。你也有一个平面的铝片,上面有一个图像,你想把它插入一个乐高积木层下面,这样它就成为了场景的一部分。你不能这样做,因为铝上没有钉子和孔。它不会粘到底层,上面的乐高玩具也不会粘

这个类比在这里被打破了,因为在现实世界中,你可以使用胶水或其他东西来让它工作

WPF提供了一个单一窗口对象,它承载一个DirectX曲面,并在该曲面上渲染其每个控件(上面的LEGOs)。ActiveX控件(或Winforms控件)都需要一个单独的系统窗口对象(铝板)。无法在DirectX曲面上渲染的元素之间放置系统窗口


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

@Will我不认为WPF很傻。它解决了窗口控件的所有问题(费用、透明度、输入恶化等),并且(只要用户有像样的图形卡)能够渲染更多的元素。问题不在于WPF,而在于窗口控件是一种更为成熟的技术,因此开发了大量有用的控件。