2012-07-31 139 views
0

是否有可能在WPF中將ActiveX控件移動到可視樹中的不同位置?我有一個控制,我想動態地移動到另一個小部件的子節點。重新註冊ActiveX控件

如果這是不可能的,是否有辦法制作控件的副本並將其放置在其他地方?我以前的嘗試完全沒有奏效。

回答

1

這裏是一個比喻,它不是一個偉大的,但希望它驅動點回家:

想象一下,你已經建立了使用拼裝玩具的場景了。你也有一塊鋁板,上面有一張圖像,你想把它插入你的樂高層之一,這樣它就成爲了場景的一部分。你不能這樣做,因爲鋁中沒有釘和孔。它不會堅持到底層,頂部的LEGO不會粘住。

這個比喻在這裏被打破,因爲在現實世界中,你可以使用膠水或其他東西來使它工作。

WPF提供了一個單獨的窗口對象,它託管着一個單獨的DirectX表面,在這個表面上呈現它的每個控件(我們的上面的LEGO)。 ActiveX控件(或Winforms控件)均需要單獨的系統窗口對象(鋁板)。在DirectX表面上渲染的元素之間放置系統窗口是不可能的。

這兩種技術不會混合(或至少不混淆)。您必須忍受這一事實並安排具有此限制的事情,否則您需要更改技術。可以使用Winforms(其中每個控件都是系統窗口)構建您的應用程序,或者創建/查找WPF控件,以提供與您正在使用的此ActiveX控件相同的功能。

+0

這很有道理。愚蠢的WPF。 – Will 2012-07-31 19:48:58

+0

@我不會稱WPF愚蠢。它解決了窗口控制所帶來的所有問題(費用,透明度,輸入惡化等),並且(如果用戶擁有像樣的圖形卡)能夠呈現更多元素。問題不在於WPF,而在於窗口控件是一種更成熟的技術,因此爲它開發了大量有用的控件。 – Tergiver 2012-07-31 20:56:18