WebView всегда самый верхний компонент - PullRequest
1 голос
/ 24 февраля 2012

Я разрабатываю приложение для панели отчетности с использованием приложения в стиле W8 Metro UI.В приложении темная тема, поэтому большая часть экрана черная.Я использую элемент управления WebView для отображения отчетов SSR .rdl с нашего сервера отчетов (которые имеют черный фон).Проблема, которую я вижу, заключается в том, что при переходе к новому отчету элемент управления WebView мигает белым в течение доли секунды, а затем загружает новый отчет.Чтобы обойти это, я попытался поместить анимацию непрозрачности Easing в элемент управления WebView, чтобы он исчез, загрузил отчет, а затем снова вернулся. Однако, что бы я ни пытался, я не могу заставить мерцание исчезнуть..

Затем я попытался поместить черный прямоугольник поверх 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);
 }

1 Ответ

0 голосов
/ 24 февраля 2012

Это просто способ работы WebView, потому что внутренне он загружает трезубец COM-управления в отдельный hwnd.Обходной путь - установить для видимости значение «Скрытый» в веб-представлении и вместо этого показать веб-кисть, которая не является интерактивной, но интегрируется с остальным пользовательским интерфейсом, чтобы ее можно было анимировать и т. Д.

...