我正在使用W8 Metro UI样式应用程序开发报告仪表板应用程序。该应用程序有一个黑暗的主题,因此大多数屏幕是黑色的。我正在使用WebView控件从我们的报表服务器(都具有黑色背景)显示SSRS .rdl报表。我看到的问题是,当我导航到新报告时,WebView控件会瞬间闪烁白色,然后加载新报告。为了解决这个问题,我尝试在WebView控件上放置一个Easing不透明度动画,使其淡出,加载报告,然后淡入。但是,无论我尝试什么,我都无法让闪烁消失
然后我尝试在WebView的顶部放置一个黑色矩形,然后逐渐淡出那个......仍然没有运气。 WebView在运行时始终处于最佳状态,这意味着我无法对其进行任何控制。有没有人知道解决这个问题的方法?
我简明地查看了WebView.Transitions,但找不到很多资源。这可能是我的答案吗?
编辑:
加载新报告的事件:
void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Create a WebViewBrush of the content currently loaded in the WebView
WebViewBrush b = new WebViewBrush();
b.SourceName = "WebView1";
b.Redraw();
Rectangle1.Fill = b;
// Hide the WebView
WebView1.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
// Navigate to the new report
var selectedItem = ItemListView.SelectedItem;
WebView1.Navigate(((Report)selectedItem).ReportUri);
}
void WebView1_LoadCompleted(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
// Show the new report
WebView1.Visibility = Windows.UI.Xaml.Visibility.Visible;
Rectangle1.Fill = new SolidColorBrush(Colors.Transparent);
}
答案 0 :(得分:0)
这就是WebView的工作方式,因为在内部它将三叉戟COM控件加载到一个单独的hwnd中。解决方法是在Webview上将Visibility设置为Hidden,而是显示一个不是交互式的webviewbrush,但它与UI的其余部分集成,因此可以设置动画等等。