2014-04-16 16 views
6

Sono nuovo di zecca per lo sviluppo del telefono Windows dopo aver acquistato una settimana scorsa solo per questo scopo con Windows 8.1 appena rilasciato ^^.WindowsPhone 8.1 WebView non viene visualizzato?

Sto provando a seguire uno dei tutorial per principianti Microsoft creando uno Minibrowser, un'app molto semplice con una casella di testo, un pulsante e una visualizzazione Web. Mi rendo conto che questo è un tutorial per Windows Phone 8 ma ho capito che Windows 8.1 non può essere enormemente diverso?

Ho eseguito il tutorial fino alla fine ma sto avendo problemi con la webview che in realtà non mostra nulla.

Emulator Screenshot

il codice XAML per la visualizzazione della pagina è

<Page 
    x:Class="MiniBrowser.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:MiniBrowser" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

    <Grid x:Name="LayoutRoot"> 

     <Grid.ChildrenTransitions> 
      <TransitionCollection> 
       <EntranceThemeTransition/> 
      </TransitionCollection> 
     </Grid.ChildrenTransitions> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!-- TitlePanel --> 
     <StackPanel Grid.Row="0" Margin="24,17,0,28"> 
      <TextBlock Text="My First Application" Style="{ThemeResource TitleTextBlockStyle}" Typography.Capitals="SmallCaps"/> 
      <TextBlock Text="Mini Browser" Margin="0,12,0,0" Style="{ThemeResource HeaderTextBlockStyle}"/> 
     </StackPanel> 

     <!--TODO: Content should be placed within the following grid--> 
     <StackPanel Grid.Row="1" x:Name="ContentRoot" Margin="12,0,12,12"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <TextBox x:Name="URL" 
         Text="http://www.xbox.com" 
         TextWrapping="NoWrap" 
         Height="Auto" 
         Width="Auto" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         Margin="0,0,12,0"/> 
       <Button x:Name="Go" 
         Grid.Column="1" 
         Content="Go" 
         Height="Auto" 
         Width="Auto" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         Margin="12,0,0,0" 
         Click="Go_Click"/> 
      </Grid> 
      <WebView x:Name="MiniBrowser" 
        Height="Auto" 
        Width="Auto" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" 
        ScrollViewer.ZoomMode="Disabled" 
        ScrollViewer.VerticalScrollBarVisibility="Disabled" 
        Loaded="MiniBrowser_Loaded" 
        NavigationFailed="MiniBrowser_NavigationFailed" NavigationCompleted="MiniBrowser_NavigationCompleted" 
        Visibility="Visible"/> 
     </StackPanel> 
    </Grid> 
</Page> 

e i gestori di eventi rilevanti per il pulsante e WebView sono

private void Go_Click(object sender, RoutedEventArgs e) 
     { 
      String site = URL.Text; 
      MiniBrowser.Navigate(new Uri(site, UriKind.Absolute)); 
     } 

     private void MiniBrowser_Loaded(object sender, RoutedEventArgs e) 
     { 
      String site = URL.Text; 
      MiniBrowser.Navigate(new Uri(site, UriKind.Absolute)); 
     } 

     private void MiniBrowser_NavigationFailed(object sender, WebViewNavigationFailedEventArgs e) 
     { 
      ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01; 
      XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 
      XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); 
      toastTextElements[0].AppendChild(toastXml.CreateTextNode("Hello World!")); 
      ToastNotification toast = new ToastNotification(toastXml); 
      ToastNotificationManager.CreateToastNotifier().Show(toast); 
     } 

     private void MiniBrowser_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) 
     { 
      ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01; 
      XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 
      XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); 
      toastTextElements[0].AppendChild(toastXml.CreateTextNode("Nav Complete")); 
      ToastNotification toast = new ToastNotification(toastXml); 
      ToastNotificationManager.CreateToastNotifier().Show(toast); 
     } 
    } 

posso vedere l'esecuzione della pagina che sia all'avvio e quando faccio clic sul pulsante vai, viene chiamato l'evento Navigazione completata quando viene visualizzato il messaggio Completo della navigazione, ma la pagina Web della xbox che è non dovrei caricare non è visibile.

Ho ottimizzato l'xaml che viene mostrato nella dimostrazione leggermente come si può vedere, quindi invece di avere una sola griglia ContentRoot, ho nidificato il pannello di stack orizzontale che contiene l'indirizzo TextBox e Button, con il WebView è sotto di esso.

Ho anche usato il WebView al contrario di telefono: WebBrowser come nel tutorial, dal momento che questo non sembra esistere in WP8.1, quindi questo potrebbe essere il problema ...

fa qualcuno sa che cosa sto facendo in modo errato, o qualcuno può commentare se lo stile che sto usando potrebbe essere migliorato in ogni caso.

L'apprendimento di una nuova piattaforma è sempre una sfida mentre cerchi di capire come le cose sono fatte in modo diverso; Windows Phone è sicuramente molto diverso da Android che mi è più familiare!

Grazie in anticipo

EDIT:

Ho provato a cambiare il codice XAML commentando quello che avevo per il contenuto della pagina (testo, pulsanti e webview) e inserendo il xaml esemplare dal tutorial come segue

<!--ContentPanel - place additional content here--> 
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <TextBox x:Name="URL" Margin="10,10,85,0" Text="http://www.xbox.com" VerticalAlignment="Top"/> 
    <Button x:Name="Go" Content="Go" HorizontalAlignment="Right" Margin="346,10,0,0" VerticalAlignment="Top"/> 
    <phone:WebBrowser x:Name="MiniBrowser" Margin="10,82,0,0"/> 
</Grid> 

ma ho esattamente lo stesso problema di prima dove il WebView è solo mostrando il nero, così come in genere cercando peggio ...

View of emulator with template xaml from tutorial

Suppongo che questo problema sia dovuto alle differenze tra il telefono previsto: WebBrowser e WebView che sto utilizzando.

+0

Chiunque downvoted, mi farebbe piacere il momento preso per aggiungere un commento costruttivo a quello che pensavo fosse una domanda abbastanza chiara da parte di uno sviluppatore inesperto di Windows Phone – o0rebelious0o

risposta

6

Ho trovato e risolto il problema.Il problema è stato con la mia dichiarazione del WebView in XAML:

<WebView x:Name="MiniBrowser" 
     Height="Auto" 
     Width="Auto" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     ScrollViewer.ZoomMode="Disabled" 
     ScrollViewer.VerticalScrollBarVisibility="Disabled" 
     Loaded="MiniBrowser_Loaded" 
     NavigationFailed="MiniBrowser_NavigationFailed"   
     NavigationCompleted="MiniBrowser_NavigationCompleted" 
     Visibility="Visible"/> 

Cambiando a

<WebView x:Name="MiniBrowser" 
     Height="425" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     ScrollViewer.ZoomMode="Disabled" 
     ScrollViewer.VerticalScrollBarVisibility="Disabled" 
     Loaded="MiniBrowser_Loaded" 
     NavigationFailed="MiniBrowser_NavigationFailed" 
     NavigationCompleted="MiniBrowser_NavigationCompleted" 
     Visibility="Visible"/> 

ora funziona. Viene visualizzato il problema relativo all'utilizzo di Height = "Auto". Stava impostando l'altezza su 0, quindi non stava effettivamente visualizzando.

The application working and displaying correctly

+0

, grazie. questo è stato utile per me – BBH1023

1

mi rendo conto che questo è un Windows Phone 8 tutorial, ma pensato finestre 8.1 non può essere massicciamente diverso sicuramente?

si stanno facendo un di Windows Runtime app, che è molto diverso da Silverlight applicazioni, come quella di quel tutorial.

Se si desidera sviluppare per Windows Phone 8.1 (e anche di Windows 8.1) si dovrebbe seguire tutorial WinRT, vi suggerisco di questo:

http://channel9.msdn.com/Series/Windows-Phone-8-1-Development-for-Absolute-Beginners

Problemi correlati