4

我正在寻找一种在 Windows 8 应用程序中可靠地滚动高 HTML 页面的方法。我正在制作的应用程序从包中的 XML 文件中获取一些 HTML 格式的文本,并且当前将其显示在 SplitPage 一侧的 WebView 中。

这一切都很好,但是由于 WebView 的工作方式,我在滚动焦点时遇到了问题。首次加载包含 WebView 的 SplitPage 时,WebView 具有滚动焦点(使用滚轮)并按预期工作,但包含其他项目的 ListView 不使用滚轮滚动,即使单击它也是如此。当用户返回主屏幕,然后返回到同一个 SplitPage 时,WebView 无法使用滚轮滚动。

我看过使用 WebViewBrush,但从我尝试过的情况来看,我认为它不会对我有用。似乎没有任何方法可以在屏幕外渲染 WebView 或折叠,然后在屏幕上的 Rectangle 上绘制 WebViewBrush。

对于以另一种方式显示数据或让 WebView 或 WebViewBrush 发挥出色的任何想法?

4

2 回答 2

1

似乎 webview 控件在根页面上正常工作,但在多个导航场景中难以保持焦点。这是我用来解决问题的解决方法。

首先,我创建了一个新类作为导航参数传递。

class DetailPayload
{
    public Frame DetailFrame { get; set; }
    public string Title { get; set; } // may not be important to your software
}

当我导航到有问题的 web 视图的页面并传递一个 DetailPayload 对象时,我创建了一个新的根框架。

DetailPayload dpl = new DetailPayload();
dpl.DetailFrame = this.Frame;
dpl.Title = itemTitle;

Frame rootFrame = new Frame();
rootFrame.Navigate(typeof(DetailPage), dpl);

Window.Current.Content = rootFrame;
Window.Current.Activate();

我将旧框架存储在要导航到的页面中的“Frame backFrame”中。

DetailPayload dpl = (DetailPayload)navigationParameter;
this.backFrame = dpl.Frame;

我更改后退按钮控件以触发不同的事件并删除禁用它的部分(如果它是根框架)。

<Button x:Name="backButton" Style="{StaticResource BackButtonStyle}" Click="backButton_Click"/>

然后我在 backButton_Click 函数中调用它返回上一页。

Window.Current.Content = this.backFrame;
Window.Current.Activate();

似乎我必须为每个带有 webview 的页面执行此操作,因为它不是实际控件,因此缺少 .Focus() 方法。

于 2012-09-19T23:25:21.157 回答
0

如果这不起作用并且您的 html 不是任意的,您可以尝试解析 html 并使用 XAML 平台的本机控件重建它。不确定是否有开箱即用的项目,但也许HTML Agility Pack可以提供帮助。

于 2012-08-08T16:38:06.763 回答