2

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

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

.AllowsTransparency = true;

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

如果将 AllowsTransparency 属性设置为 true,则在 Window 中也存在相同的行为。

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

任何帮助表示赞赏。

编辑

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

4

2 回答 2

4

WebBrowser 不是本机 WPF 控件。它实际上只是在内部创建一个 ActiveX WebBrowser 控件。不能将 HwndHost(如 WebBrowser)放入AllowsTransparency为 true 的 Window/Popup 中,因为这会启用分层窗口(即包括 WS_EX_LAYERED 样式)。

于 2012-04-12T17:15:35.597 回答
-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>
 ......
于 2012-04-12T03:15:00.620 回答