2015-04-30 8 views
8

In WebView carico gli elementi HTML con WP 8.1. Ogni volta che il contenuto supera l'altezza di WebView, è possibile scorrere senza problemi. Il mio problema è che ho degli elementi XAML nella parte superiore di WebView, che devono scorrere insieme allo scroll di WebView.WebView all'interno di ScrollViewer con intestazione dell'elemento XAML

Sourcecode:

<ScrollViewer> 
<Grid> 
<Grid.RowDefinitions> 
<RowDefinition Height="Auto" /> 
<RowDefinition Height="*"/> 
</Grid.RowDefinitions> 
<Grid VerticalAlignment="Top" > 
<StackPanel x:name="xamlelement" Margin="15 20 0 0"> 
<textblock/> 
    ------- 
    ------- 
    ------- 
</StackPanel> 
</Grid> 
<Grid x:Name="testgrid" Grid.Row="1"> 
<WebView Margin="0 30 0 0" x:Name="msgContent" > 
</WebView> 
</Grid> 
</Grid> 
</ScrollViewer> 

Ogni volta che l'elemento WebView Scrolls "msgContent" Voglio che lo StackPanel "xamlelement" per scorrere insieme al WebView.

+0

È possibile iniettare in WebView per disattivare la gestione di overflow che consente il suo scorrimento in modo che ScrollViewer gestisca invece lo scorrimento. Il modo in cui lo hai ora sto indovinando che in realtà è una pergamena all'interno di una pergamena, giusto? –

risposta

4

Il problema è che possiamo disabilitare webview rotolo da questo 2 passi

1) modificando overhidden in html contenuto caricato al webview

2) modificando altezza webview uguale al contenuto HTML caricata in esso .

Ma poi quando si cerca di muoversi in WebView, i evnets non vengono passati al elemento genitore ScrollViewer

+0

È un modo per trovare l'altezza del contenuto html caricato [IN caso di pagine web reattive HTML '] –

+0

Aggiungere un listener a scriptnotify in webview e aggiungere listener per ridimensionare l'evento nella pagina html e inviare l'altezza del documento da scipt a scriptnotify nel codice C# –

0

WebView fornisce metodo InvokeScript, che esegue la funzione di script specificato dal HTML attualmente caricata, con argomenti specifici. Quando si verifica l'evento LoadCompleted di WebView, sto richiamando quel JavaScript che disabilita lo scorrimento. Controlla il codice completo indicato di seguito.

string DisableScrollingJs = @"function RemoveScrolling() 
          { 
           var styleElement = document.createElement('style'); 
           var styleText = 'body, html { overflow: hidden; }' 
           var headElements = document.getElementsByTagName('head'); 
           styleElement.type = 'text/css'; 
           if (headElements.length == 1) 
           { 
            headElements[0].appendChild(styleElement); 
           } 
           else if (document.head) 
           { 
            document.head.appendChild(styleElement); 
           } 
           if (styleElement.styleSheet) 
           { 
            styleElement.styleSheet.cssText = styleText; 
           } 
          }"; 

void webView_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    webView.InvokeScript("eval", new[] { DisableScrollingJs }); 
} 

Da codeproject.

Problemi correlati