在 WP7 中禁用不透明的 WebBrowser 控件

发布于 2024-10-22 18:18:25 字数 133 浏览 1 评论 0原文

我的应用程序中有一个网络浏览器,只需在没有用户的情况下显示即可。可以与之互动。

因此,如果我设置 IsEnabled = false,浏览器的页面顶部会变成灰色不透明,我不希望这样。

我该怎么办?

谢谢。

i've a webbrowser in my application that only have to show without the user. can interact with it.

So if i set the IsEnabled = false, the browser become with a gray opacity on top of page and i don't want this.

How can i do?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等你爱我 2024-10-29 18:18:25

如果您想禁用用户交互,那么您可以尝试:

  • 将 Opacity 0.01 Canvas 放置在 Web 浏览器顶部 - 这几乎是不可见的,并且会阻止用户与之互动。

If you want to disable user interactions, then you could try:

or

  • position an Opacity 0.01 Canvas over the top of the web browser - this would be almost invisible and would stop the user from interacting with it.
你对谁都笑 2024-10-29 18:18:25

为了防止在将 IsEnabled 设置为 falseWebBrowser 控件的不透明度发生变化,您需要为其创建自定义样式。它非常简单,只需如下所示:

 <Style x:Key="WebBrowserStyle1" TargetType="phone:WebBrowser">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="phone:WebBrowser">
                    <Border x:Name="StateContainer" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Opacity="1">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="WebBrowserStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="Disabled"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border x:Name="PresentationContainer"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

但是,用户将无法与内容交互。如果您希望控件被禁用但具有交互性,我不确定您想要实现什么目标。如果您试图做的是停止用户与控件交互,那么上面的方法就可以工作,或者将 IsHitTestVisible 设置为 false 将达到相同的结果,但需要更少的时间变化:P

To prevent the opacity change on the WebBrowser control when you set IsEnabled to false you will need to create a custom style for it. It's very simple and need only look like the following:

 <Style x:Key="WebBrowserStyle1" TargetType="phone:WebBrowser">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="phone:WebBrowser">
                    <Border x:Name="StateContainer" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Opacity="1">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="WebBrowserStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="Disabled"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border x:Name="PresentationContainer"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

However, the user will not be able to interact with the contents. I'm not sure what you are trying to achieve if you want the control to be disabled but interactive. If what you are trying to do is stop the user interacting with the control, then the above would work, or setting IsHitTestVisible to false would achieve the same result, but with fewer changes :P

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文