我在WPF项目中有一个CefSharp浏览器。它显示的html主要由用户输入。当html发生变化时,我需要重新加载浏览器,我正在做的如下:
private void UpdateHTML(ChromiumWebBrowser browser) {
string outputHTML = this.PrepareHTMLFromUserInput();
string url = @"file:///" + this.GetResourcePath();
browser.LoadHtml(outputHTML, url);
}
这很好用,但它总是将浏览器滚动到顶部。我想保留y偏移量。我怎么能这样做?
答案 0 :(得分:0)
部分答案:在UserControl中包装浏览器,而UserControl又位于ScrollViewer中,可以保留y偏移量。但是现在我遇到了一个新问题 - 我需要调整ScrollViewer和UserControl的高度以跟上浏览器高度的变化。
<ScrollViewer x:Name="MyScrollViewer" Grid.Row="1">
<UserControl x:Name="WrappingUserControl" Height="2000">
<cefSharp:ChromiumWebBrowser x:Name="EditorBrowser" Address="about:blank"/>
</UserControl>
</ScrollViewer>
答案 1 :(得分:0)
一个次优解决方案可能是写入文件,加载一次然后调用Reload:
browser.Load("c:\....mypath.html");
...
File.AppendText("<p>my html</p>");
...
browser.Reload();
它将保持用户离开它的滚动位置。