【问题标题】:Disable WebBrowser without graying out禁用 WebBrowser 而不灰显
【发布时间】:2014-10-13 22:53:44
【问题描述】:

我在 Windows Phone 8 中为 Web 浏览器设置了 IsEnabled="False",但它变成了灰色而不是白色。

在将IsEnabled 设置为false 时,有什么方法可以防止网络浏览器变灰?

  • 请不要告诉我这是一件坏事。网络浏览器必须禁用片刻,以便Pivot 可以抓取滑动。我的应用是PhoneGap + Native 的混合应用,每个PivotItem 包含一个CordovaView 元素。

【问题讨论】:

  • 我建议在您的 HTML 元素上使用“禁用”标志,并在您的页面准备就绪时使用某种类型的 JavaScript 来切换该标志。
  • @AlwaysLearning 是否允许 Pivot 或 Panorama 滑动到下一页?我认为它需要在 XAML 级别禁用。
  • @Romasz 似乎有效。请将其发布为答案。

标签: c# wpf xaml windows-phone-8


【解决方案1】:

您可以尝试使用UIElement.IsHitTestVisible property

当您将其值设置为 False 时,它不会报告任何输入事件并且无法获得焦点。

【讨论】:

  • @MahdiGhiasi 在您的情况下是否可以设置 Pivot.SelectedIndex 属性?
  • 这是一个枢轴,每个 PivotItem 内部都有 WebBrowsers。这些网络浏览器仅包含垂直滚动项。我需要枢轴自然地表现。现在,如果我手动设置 SelectedIndex,那么滑动效果不会跟随用户的手,这是不好的。
  • @MahdiGhiasi 我不确定,但在这种情况下,可能需要在移动之后添加一些自定义动画。也许尝试kidshaw's answer - 我不确定当点击事件时它会如何表现,你覆盖网络浏览器,当移动手指时枢轴会像往常一样表现(也许它更容易解决)?
  • 我最终实现了自定义动画。
【解决方案2】:

您可以覆盖一个带有半透明白色背景的矩形,而不是直接禁用。如果放置在 Web 浏览器控件的前面,它将处理阻止 Web 浏览器被编辑的交互,并且可以通过您当前用于控制 Web 浏览器上的 IsEnabled 的相同绑定使其可见。

如果您想真正提供帮助,可以使用带有嵌套标签的边框向用户显示“请稍候”消息。

【讨论】:

    【解决方案3】:

    只需通过样式更改它,就像这样:

    <phone:PhoneApplicationPage.Resources>
        <Style x:Key="Chubs_WB" 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">
                                        <Storyboard>
                                            <!--
                                            <DoubleAnimation Duration="0" To=".4" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="StateContainer"/>
                                            -->
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <Border x:Name="PresentationContainer"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </phone:PhoneApplicationPage.Resources>
    

    <phone:WebBrowser x:Name="myBrowser" Style="{StaticResource Chubs_WB}" />
    

    我们只是去掉了禁用时的双重动画。

    【讨论】:

      猜你喜欢
      • 2018-05-20
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2014-08-12
      相关资源
      最近更新 更多