1

所以我有一个普通的 AppBar 可以在 C# Metro 应用程序中工作,但问题是我需要该应用程序来显示一个 html 页面。我创建了一个占页面宽度和高度 100% 的 WebView,通过这样做,AppBar 在右键单击和边缘滑动时不再显示。AppBar 有没有办法与这样的 WebView 一起工作?

- 解决 -

我最终做的是在 WebView 周围添加一个 1px 边框,以便可以检测到滑动。由于我在 WebView 中包含的内容会随时间动态变化,因此 WebViewBrush 对我来说并不适用。相反,我只是在打开 AppBar 时缩小了 WebView 的大小,然后在关闭时展开它。

4

3 回答 3

2

不是试图窃取菲利普的答案,但我认为需要更多细节才能完全回答这个问题。

即使 WebView 全屏运行,AppBar 也会在您右键单击或滑动时尝试显示自己。您可以通过订阅AppBar.Opened事件来证明这一点。有趣的是,AppBar 似乎以某种方式知道它被遮挡并自动关闭。即使它没有自行关闭,您也无法看到它,因为它在 WebView 下被遮挡了。

Filip 在 AppBar 打开时隐藏 WebView 和使用 WebViewBrush 的想法是正确的。你可以在这里找到一个很好的例子:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webviewbrush.aspx

至于何时在 WebView 和 WebViewBrush 之间切换,我只需在 AppBar.Opened 上进行,然后在 AppBar.Closed 上进行反转。AppBar 是轻度关闭,这意味着只要您点击它的客户区域之外的任何地方,它就会关闭。

最后一句忠告:在我的测试中,滑动手势似乎有时会被吞没。当我在 WebView 的顶部和底部放置一个 1 像素边框时,这个问题似乎消失了。你的旅费可能会改变。

于 2012-07-30T21:47:49.650 回答
1

您需要在其上显示 XAML UI 时隐藏 WebView,并改用 WebViewBrush。

于 2012-07-30T21:09:14.177 回答
0

如上所述,1px 边框有助于确保 AppBar 支持顶部/底部滑动。但是,与@matthieu 类似,当使用鼠标和右键单击方法时,我仍然无法可靠地打开 AppBar。

问题是我将 XAML 元素包含为 WebView 的对等元素,而不是像AppBar.Closed 的 MSDN 参考所建议的那样作为父元素:

<Border BorderBrush="Gray" BorderThickness="2" Margin="100,20,100,20">
    <Grid>
        <WebView x:Name="contentView" Source="http://www.contoso.com"/>
        <Rectangle x:Name="contentViewRect"/>
    </Grid>
</Border>

如果我以这种方式应用边框,AppBar 也可以用鼠标可靠地打开。

最后要注意的一件事是使用 aBorderBrush="Transparent"也可以,因此您不必实际看到丑陋的边框。我最终的 XAML 类似于:

<Border BorderThickness="0,1,0,1" BorderBrush="Transparent">
    <Grid>
        <WebView x:Name="WebView"></WebView>
        <Rectangle x:Name="RectWebViewBrush"></Rectangle>
    </Grid>
</Border>
于 2013-07-16T04:00:32.947 回答