WP WebBrowser黑色背景

时间:2013-12-31 07:15:51

标签: c# wpf windows-phone-8 windows-phone webbrowser-control

有什么办法可以将Windows Phone WebBrowser控件的默认白色背景颜色更改为黑色。按背景颜色,我指的是加载时和任何方向上滚动时显示的颜色。我已经尝试了控件上的所有可能的颜色设置,包括背景和前景色,但它们似乎没有任何效果。这甚至可能吗?我怀疑显示黑页的技巧是否有效,因为我正在显示黑色背景的页面,但是当页面加载时以及当用户定期滚动页面时显示白色区域。

3 个答案:

答案 0 :(得分:0)

您可以在代码隐藏文件中更改背景颜色的主题,但是您必须确保当用户将其默认主题更改为亮时,您的控件的背景将相应地更改。查看以下有关使用主题的article

答案 1 :(得分:0)

由于webbrowser引擎呈现HTML页面的背景颜色,因此无法实现。你可以使用的是一个技巧。您可以将默认不透明度设置为0,并在加载完成后,将不透明度更改为1:

<Grid x:Name="ContentPanel" Margin="10"  Background="Black">
<phone:WebBrowser x:Name="web" HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" Width="400" Height="200" Opacity="0" LoadCompleted="web_LoadCompleted"/>
</Grid>

private void web_LoadCompleted(object sender, NavigationEventArgs e)
{
   web.Opacity = 1;
}

您可以找到更多信息here。另一个解决方案是使用other element覆盖webbrowser。

答案 2 :(得分:0)

似乎没有办法改变WebBrowser组件的背景颜色,并且在加载时将其变为黑色的唯一方法是使其透明或在加载时在其前面显示黑色块。我发现的另一件事是,滚动时看到的白色背景不是本机浏览器组件的一部分,实际上是由WPF包装器引起的。我在阅读http://www.scottlogic.com/blog/2011/11/17/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control.html后发现了包装器的存在。经过多次试验和错误后,我确定通过更改构成WebBrowser组件的所有Border元素的背景颜色,可以更改滚动时显示的颜色。我最终得到的代码是根据帖子上的代码修改的内容:

using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using LinqToVisualTree;
using Microsoft.Phone.Controls;
using System.Collections.Generic;
using System.Windows.Media;

namespace InvertBrowser
{
    class WebBrowserHelper
    {
        private WebBrowser _browser;

        public bool ScrollDisabled { get; set; }

        public WebBrowserHelper(WebBrowser browser)
        {
            _browser = browser;
            browser.Loaded += new RoutedEventHandler(browser_Loaded);
        }

        private void browser_Loaded(object sender, RoutedEventArgs e)
        {
            IEnumerable<DependencyObject> borders = _browser.Descendants<Border>();

            foreach (var o in borders)
            {
                var ding = o as Border;
                ding.Background = new SolidColorBrush(Colors.Black);
            }
        }
    }
}

在加载时隐藏WebBrowser组件的代码可以在其他地方轻松找到。