Windows 8 如何在Metro中创建在WebView中工作的AppBar?

Windows 8 如何在Metro中创建在WebView中工作的AppBar?,windows-8,webview,windows-runtime,winrt-xaml,appbar,Windows 8,Webview,Windows Runtime,Winrt Xaml,Appbar,所以我有一个普通的AppBar在C#metro应用程序中工作,但问题是我需要该应用程序显示一个html页面。我创建了一个WebView,它占据了页面宽度和高度的100%,这样一来,AppBar就不会在右键单击和边缘滑动时显示。AppBar是否有办法在适当的位置使用这样的WebView --决心-- 我最后做的是在WebView周围添加一个1px边框,以便可以检测到刷卡。由于我在WebView中包含的内容会随着时间的推移而动态变化,所以WebViewBrush不适合我。相反,我只是在打开AppBa

所以我有一个普通的AppBar在C#metro应用程序中工作,但问题是我需要该应用程序显示一个html页面。我创建了一个WebView,它占据了页面宽度和高度的100%,这样一来,AppBar就不会在右键单击和边缘滑动时显示。AppBar是否有办法在适当的位置使用这样的WebView

--决心--


我最后做的是在WebView周围添加一个1px边框,以便可以检测到刷卡。由于我在WebView中包含的内容会随着时间的推移而动态变化,所以WebViewBrush不适合我。相反,我只是在打开AppBar时缩小了WebView的大小,然后在关闭AppBar时将其扩展。

您需要隐藏WebView,同时在其顶部显示XAML UI,并使用WebViewBrush来代替。

不试图窃取Filip的答案,但我认为需要更多细节来完全回答这个问题

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

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

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


最后一点建议:在我的测试中,刷卡手势有时会被吞下。当我在WebView的顶部和底部放置一个1像素的黑板时,这个问题似乎消失了。您的里程数可能会有所不同。

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

问题在于,我将XAML元素作为WebView的对等元素,而不是作为父元素,如下所示:

<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时,它是否工作?在我的应用程序中,滑动手势起作用,但使用鼠标时,应用程序栏会立即打开和关闭
<Border BorderThickness="0,1,0,1" BorderBrush="Transparent">
    <Grid>
        <WebView x:Name="WebView"></WebView>
        <Rectangle x:Name="RectWebViewBrush"></Rectangle>
    </Grid>
</Border>