是否可以将Windows控件的默认白色背景色更改为黑色?通过背景色,我指的是加载时显示的颜色,以及在任何方向上滚动过时所显示的颜色。我已经尝试了所有可能的颜色设置在控制,包括背景和前景颜色,但他们似乎没有任何影响。这有可能吗?我怀疑显示黑色页面的技巧是否会奏效,因为我显示的是具有黑色背景的页面,但是在加载页面时显示白色区域,以及当用户定期滚动到比页面更远的时候。
发布于 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组件的所有边框元素的背景色,就可以更改在过度滚动时显示的颜色。我最后得到的代码是从文章中的代码中修改的:
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组件的代码可以很容易地在其他地方找到。
发布于 2013-12-31 07:36:25
您可以在文件后面的代码中更改背景颜色的主题,但您必须确保当用户更改其默认主题以照亮您的控件时,背景将相应更改。查看以下关于使用主题的文章。
发布于 2013-12-31 08:08:52
这是不可能的,因为网页浏览器引擎呈现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;
}https://stackoverflow.com/questions/20853441
复制相似问题