2009-12-31 152 views
3

我創建了一個簡單的WPF UserControl(任何控件都可以)並將其插入Winform(使用ElementHost)。 這工作正常。 WPF控件嵌入在WinForm中,當WinForm移動時,WPF控件隨着它移動,就像WinForm控件一樣。 當通過將TranparencyKey設置爲與BackColor相同的值將WinForm更改爲透明時,會發生一些問題: - 不顯示WPF控件 - 而是在其位置顯示黑色矩形。 - 如果移動了WinForm圍繞着屏幕,然後在其原始位置出現WPF控件 - 就像它被WinForm覆蓋一樣。WPF控件裏面沒有顯示透明的winform

更改ElementHost的屬性(如BackColorTransparent)不會改變行爲。 將WinForm的BackColor和TransparencyKey設置爲黑色擺脫了黑色矩形問題,但仍然在WinForm被移動時,WPF控件留在了原始位置。

還要注意,這些問題出現在Windows XP SP3(這是我們的目標操作系統),但不是在Windows 2003上。 (我們沒有檢查Vista和Windows 7)。

任何想法如何有一個透明的WinForm與WPF控制裏面,仍然得到一個正常的行爲?

+0

你檢查過不同的XP電腦(使用不同的圖形硬件)嗎?像這樣的東西往往是圖形驅動程序的錯誤。 – Nir 2009-12-31 10:14:05

+0

我也遇到了這個問題,也會對解決方案感興趣。 – 2009-12-31 10:19:15

+0

我使用不同的硬件在2臺XP電腦上進行測試,結果相同。我懷疑這與HW無關,但與WinForm和WPF Interop有關。 – 2009-12-31 16:47:51

回答

0

您是否在WPF控件上設置了背景屬性?默認情況下,它從它的父容器繼承,如果它不存在,它將執行此操作。嘗試將UserControl上的背景屬性設置爲白色或灰色,並且問題應該消失。