Popup AllowTransparency正在杀死WebBrowser子

时间:2012-04-12 02:40:09

标签: wpf popup browser transparency

所以我在我的应用程序中有一个控件,我想利用弹出窗口。它有一个WebBrowser控件,它是它的一部分。

我注意到每当我设置以下属性时,只有WebBrowser控件在我的自定义控件上消失。

.AllowsTransparency = true;

但是,如果我删除该属性,控件看起来正常并且功能正常。我设置该属性的唯一原因是因为它控件使用圆形边框,默认情况下,Popup控件具有黑色背景。

如果将AllowTransparency属性设置为true,则窗口中存在相同的行为。

请注意,您可以在没有特殊属性的全新控件上模拟此行为。我已在新控件和新窗口上测试了它们。

感谢任何帮助。

修改

当WebBrowser设置为DesignMode = On时会发生这种情况。

2 个答案:

答案 0 :(得分:3)

WebBrowser不是本机WPF控件。它实际上只是在内部创建一个ActiveX WebBrowser控件。 HwndHost(如WebBrowser)无法放入其 AllowTransparency 为真的Window / Popup中,因为它启用了分层窗口(即包含WS_EX_LAYERED样式)。

答案 1 :(得分:-1)

我不确定你在那里做什么。没有代码,很难说。但我的猜测是,你没有设置内部边框控件的背景。只需将此代码放在一个新的解决方案中就应该没有任何问题,一切都可见:

<StackPanel >
    <Popup IsOpen="True" AllowsTransparency="True">
        <Border Padding="10" Width="250" Height="250" Opacity="1" BorderBrush="Black" BorderThickness="1" CornerRadius="3">
            <Border Background="Black">
                <StackPanel>
                    <TextBlock Foreground="White" Margin="5,25,5,5" HorizontalAlignment="Center">tata</TextBlock>
                    <Button Background="Black" Foreground="White" BorderBrush="Silver" HorizontalAlignment="Center">ok</Button>
                </StackPanel>
            </Border>
        </Border>
    </Popup>
 ......