首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WP WebBrowser黑背景

WP WebBrowser黑背景
EN

Stack Overflow用户
提问于 2013-12-31 07:15:51
回答 3查看 2.3K关注 0票数 0

是否可以将Windows控件的默认白色背景色更改为黑色?通过背景色,我指的是加载时显示的颜色,以及在任何方向上滚动过时所显示的颜色。我已经尝试了所有可能的颜色设置在控制,包括背景和前景颜色,但他们似乎没有任何影响。这有可能吗?我怀疑显示黑色页面的技巧是否会奏效,因为我显示的是具有黑色背景的页面,但是在加载页面时显示白色区域,以及当用户定期滚动到比页面更远的时候。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-06 08:01:02

似乎并没有真正改变WebBrowser组件背景颜色的方法,而在加载时使其变为黑色的唯一方法是使其透明,或者在加载时在其前面显示一个黑色块。不过,我发现的另一件事是,当过度滚动时看到的白色背景不是本机浏览器组件的一部分,实际上是由WPF包装器造成的。在阅读http://www.scottlogic.com/blog/2011/11/17/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control.html之后,我发现了包装器的存在。经过多次尝试和错误之后,我确定通过更改构成WebBrowser组件的所有边框元素的背景色,就可以更改在过度滚动时显示的颜色。我最后得到的代码是从文章中的代码中修改的:

代码语言:javascript
复制
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组件的代码可以很容易地在其他地方找到。

票数 0
EN

Stack Overflow用户

发布于 2013-12-31 07:36:25

您可以在文件后面的代码中更改背景颜色的主题,但您必须确保当用户更改其默认主题以照亮您的控件时,背景将相应更改。查看以下关于使用主题的文章

票数 0
EN

Stack Overflow用户

发布于 2013-12-31 08:08:52

这是不可能的,因为网页浏览器引擎呈现HTML页面的背景色。你能用的是一个诡计。可以将默认不透明度设置为0,加载完成后,将不透明度更改为1:

代码语言:javascript
复制
<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;
}

您可以找到更多的信息,这里。另一个解决方案是用其他元素覆盖with浏览器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20853441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档