所以我有一个普通的AppBar在C#metro应用程序中工作,但问题是我需要应用程序来显示一个html页面。我创建了一个占据页面宽度和高度100%的WebView,通过这样做,AppBar不再显示右键单击和边缘滑动。 AppBar有没有办法使用这样的WebView?
- 解决 -
我最终做的是在WebView周围添加1px边框,以便可以检测到滑动。由于我在WebView中包含的内容会随着时间的推移而动态变化,因此WebViewBrush对我来说无法解决问题。相反,我只是在打开AppBar时缩小WebView的大小,然后在关闭时扩展它。
答案 0 :(得分:2)
并没有试图窃取菲利普的回答,但我认为还需要更多细节来完全回答这个问题。
即使WebView全屏运行,AppBar也会在您右键单击或滑动时尝试显示自己。您可以通过订阅 AppBar.Opened 事件来证明这一点。有趣的是,AppBar似乎以某种方式知道它被遮挡并自动关闭。即使它没有关闭,你也无法看到它,因为它在WebView下被遮挡了。
当AppBar打开时,Filip有正确的想法隐藏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像素的边界时,这个问题似乎消失了。您的里程可能会有所不同。
答案 1 :(得分:1)
您需要在其上方显示XAML UI时隐藏WebView,并改为使用WebViewBrush。
答案 2 :(得分:0)
如上所述,1px边框可以帮助确保AppBar的顶部/底部滑动受到尊重。但是,与@matthieu类似,在使用鼠标和右键单击方法时,我仍然无法让AppBar可靠地打开。
问题是我将XAML元素作为对象包含在WebView中,而不是MSDN reference for AppBar.Closed建议的父对象:
<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也可以用鼠标可靠地打开。
最后要注意的是,使用BorderBrush="Transparent"
也可以正常工作,因此您不必真正看到丑陋的边框。我最后的XAML是这样的:
<Border BorderThickness="0,1,0,1" BorderBrush="Transparent">
<Grid>
<WebView x:Name="WebView"></WebView>
<Rectangle x:Name="RectWebViewBrush"></Rectangle>
</Grid>
</Border>