2014-09-08 1 views
1

Я разрабатываю приложение для WP8 с помощью Visual Studio 2013. Я использовал WPToolkit для интеграции элемента управления WebBrowser.Как отключить масштабирование и прокрутку в веб-браузере для приложения WP8?

Я показываю статическую информацию в своем элементе управления WebBrowser с изменениями только для текста, используя следующую функцию.

Private Function CreateHtmlDocument() As String 

    Dim strHtmlDoc As String = "" 

    strHtmlDoc = "<html>" 
    strHtmlDoc = strHtmlDoc & "<head>" 
    strHtmlDoc = strHtmlDoc & "<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no';>" 
    strHtmlDoc = strHtmlDoc & "</head>" 
    strHtmlDoc = strHtmlDoc & "<style type='text/css'>" 
    strHtmlDoc = strHtmlDoc & "body{ -ms-touch-action: none !important; -ms-content-zooming:none; -ms-scroll-limit-y-max :auto;}" 
    strHtmlDoc = strHtmlDoc & "</style>" 
    strHtmlDoc = strHtmlDoc & "<body>" 
    strHtmlDoc = strHtmlDoc & "<span style='color:#bf2e1a'><b><font face='Times New Roman' size='3'>" & clsGlobalVariables.branch & "</font></b></span>" 
    strHtmlDoc = strHtmlDoc & "<br> <span style='color:#c1481a'><font face='Times New Roman' size='2'>" & clsGlobalVariables.company_name & "<br> (Legal Name : " & clsGlobalVariables.legal_name & ")</font></span>" 
    strHtmlDoc = strHtmlDoc & "<br> <span style='color:#878270'><p align='left'><font face='Arial' size='2'>" & clsGlobalVariables.address & "</font></p> </span>" 
    strHtmlDoc = strHtmlDoc & "<span style='color:#878270'><font face='Arial' size='2'>Tel &nbsp;&nbsp;&nbsp;&nbsp;:</span> <span style='color:blue'>" & clsGlobalVariables.telephone & "</font></span>" 
    strHtmlDoc = strHtmlDoc & "<br> <span style='color:#878270'><font face='Arial' size='2'>Fax &nbsp;&nbsp;&nbsp;:</span> <span style='color:blue'>" & clsGlobalVariables.fax & "</font></span>" 
    strHtmlDoc = strHtmlDoc & "<br> <span style='color:#878270'><font face='Arial' size='2'>Email&nbsp;:</span> <span style='color:blue'>" & clsGlobalVariables.email & "</font></span>" 
    strHtmlDoc = strHtmlDoc & "<br>" 
    strHtmlDoc = strHtmlDoc & "<br>" 
    strHtmlDoc = strHtmlDoc & "</body>" 
    strHtmlDoc = strHtmlDoc & "</html>" 


    Return strHtmlDoc 

End Function 

К сожалению, я не могу отключить Pinch Zoom. К счастью, двойное нажатие не работает. Кроме того, свиток прослушивается тем, что он прокручивается за пределы моих данных и показывает пустое место в моем элементе управления.

Некоторые изображения ссылки (Еще не 10 Rep) -

http://i.stack.imgur.com/eifhn.jpg  - How it looks normally. 
http://i.stack.imgur.com/0panl.jpg  - It zooms too much. 
http://i.stack.imgur.com/znf5y.jpg  - It scrolls way below the text. 

Я уже пытался http://www.scottlogic.com/blog/2011/11/17/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control.html. Это не работает для WP8.

Мой XAML -

<Grid HorizontalAlignment="Left" Height="320" Margin="10,274,0,0" Grid.Row="1" VerticalAlignment="Top" Width="460"> 
     <phone:WebBrowser x:Name="webBrowser" HorizontalAlignment="Left" Height="320" IsScriptEnabled="True" VerticalAlignment="Top" Width="460" BorderThickness="2" BorderBrush="OrangeRed" ScrollViewer.VerticalScrollBarVisibility="Auto"/> 
</Grid> 

ответ

0

Это запечатанный класс, так что если вы действительно хотите, чтобы достичь этого, то вам нужно будет пробежать в VisualTree, чтобы добраться до правильного контейнера.

Просто небольшой Обход затем: (Disabled зум, но дают возможность скроллинга)

Жестко запрограммированные значения

<ScrollViewer> 
    <phone:WebBrowser x:Name="my_wb" Height="1000" IsHitTestVisible="False"></phone:WebBrowser> 
</ScrollViewer> 

Если вы знаете, как передать значения JS обратно вызова приложения вы можете выбирать размер WebBrowser отлично.

<ScrollViewer> 
    <phone:WebBrowser x:Name="my_wb" Height="{Binding HeightOfRenderHTMLpage}" IsHitTestVisible="False"></phone:WebBrowser> 
</ScrollViewer> 
+0

Что о тех случаях, когда необходимо прокрутить для просмотра всех данных? http://i.stack.imgur.com/K98VY.jpg – doodla

+0

Тогда вам нужно изменить свой вопрос, в нем говорится: «Как отключить масштабирование и прокрутку» –

+0

. Можете ли вы ответить на вопрос? Я буду заботиться о точности вопроса в будущем. – doodla

0

Я столкнулся с той же проблемой (я думаю) в прошлом месяце, вот мое решение (в C#).

Set IsHitTestVisible ложь для отключения все взаимодействия с пользователем и включить скрипты с IsScriptEnabled истинной

XAML

<ScrollViewer> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition 
       Height="auto" /> 
      <RowDefinition 
       Height="auto" /> 
      <RowDefinition 
       Height="auto" /> 
     </Grid.RowDefinitions> 
     <TextBlock 
      Grid.Row="0" 
      x:Name="Subject" /> 
     <TextBlock 
      Grid.Row="1" 
      x:Name="Date" /> 
     <phone:WebBrowser 
      Grid.Row="2" 
      ScriptNotify="browser_ScriptNotify" 
      x:Name="browser" 
      IsHitTestVisible="False" 
      IsScriptEnabled="True" /> 
    </Grid> 
</ScrollViewer> 

Перед тем, как установить HTML для в браузере, инъекционные JavaScript с bodyheight обратного вызова

C#

// preparing HTML page with some viewport settings and JS callback to c# 
private string PrepareHtml(string body) 
{ 
    return @"<!DOCTYPE html> 
      <html> 
       <head> 
        <meta name=""viewport"" content=""width=432, initial-scale=1, maximum-scale=1, user-scalable=0, target-densitydpi=device-dpi"" /> 
       </head> 
       <body> 
        " + body + @" 

        <script type=""text/javascript""> 

         window.external.notify(document.body.clientHeight.toString()); 

        </script> 
       </body> 
      </html>"; 
} 

при получении уведомления о высоте клиентов, установить браузеры высоту

C#

void browser_ScriptNotify(object sender, NotifyEventArgs e) 
{ 
    int o; 
    if (int.TryParse(e.Value, out o)) 
    { 
     browser.Height = o; 
    } 
} 

Надеется, что это помогает