在WP7 Silverlight WebBrowser控件中调用NavigateToString时如何避免闪烁

在WP7 Silverlight WebBrowser控件中调用NavigateToString时如何避免闪烁,silverlight,visual-studio-2010,windows-phone-7,Silverlight,Visual Studio 2010,Windows Phone 7,我需要在屏幕上呈现一些富文本,这些富文本需要按照时间线进行更改。在我的iOS版本中,我使用Web控件,在Android版本中,我使用TextSpan 我读过一些建议,其中有人说WebControl是在WindowsPhone7中呈现富文本的最佳方式,因此我有一个WebBrowser控件,我用HTML字符串填充它。在我决定通过调用NavigateToString以编程方式更改内容之前,一切正常。内容会发生更改,但在更改之间会出现一个白色屏幕的短暂闪烁 由于我的程序需要每秒几次更新WebBrowse

我需要在屏幕上呈现一些富文本,这些富文本需要按照时间线进行更改。在我的iOS版本中,我使用Web控件,在Android版本中,我使用TextSpan

我读过一些建议,其中有人说WebControl是在WindowsPhone7中呈现富文本的最佳方式,因此我有一个WebBrowser控件,我用HTML字符串填充它。在我决定通过调用NavigateToString以编程方式更改内容之前,一切正常。内容会发生更改,但在更改之间会出现一个白色屏幕的短暂闪烁

由于我的程序需要每秒几次更新WebBrowser控件的内容,因此所有刷新后屏幕都变为白色

我正在考虑将文本块与内联和换行符一起使用的痛苦想法,但我必须手动转换HTML,所以我想看看是否有人知道如何这样做


要复制此问题,只需在页面上放置一个WebBrowser控件,并使用NavigateToString更新内容,即可看到白色过渡闪烁

我建议:

WB_OnNavigating --> visibility = collapsed
WB_OnNavigated --> visibility = visible
或者是一个关于不透明的游戏。但考虑到每秒的多次刷新,这可能太慢了。还是值得一试,看看你能得到什么

有没有办法让XAML背景为白色,或者HTML内容的背景颜色与页面背景相匹配


仍在寻找更好的答案。

该行为是正常的,因为WebBrowser控件基本上必须重新呈现整个页面,即使您更改了内容的一小部分。您最好的选择是使用-这将涉及一些手动文本格式处理。

我结合使用导航的
和javascript。我从
Opacity=0
开始,将占位符页面加载到控件中

<html>
 <head>
  <script type="text/javascript">function setContent(s) { document.body.innerHTML = s; } </script>
 </head>
 <body></body>
</html>

在我的例子中,我正在填充整个页面内容,不过如果您只更改页面的某些部分,您可能可以编写一个更有针对性的JavaScript脚本。但仍然是CTP:我尝试了不透明度和可见性,但内容也没有出现。尝试了所有背景组合,但每秒只有几次更新会使内容消失,因为闪烁

Micorosft.Phone.Reactive
您可以使用
Throttle().DistinctUntilChanged()
平滑更改。请参阅此处:
webBrowser.InvokeScript("setContent", myContents);