我是Windows手机开发的新手,上周为了这个目的购买了一个Windows 8.1刚刚发布了^^。
我正在尝试按照Microsoft初学者教程之一创建Minibrowser,这是一个非常简单的应用程序,带有文本框,按钮和webview。我意识到这是一个Windows Phone 8教程,但想到Windows 8.1肯定不会大不相同?
我已完成整个教程,但我遇到的问题是webview实际上没有显示任何内容。
页面视图的xaml是
<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>
以及按钮和webview的相关事件处理程序
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);
}
}
从运行页面我可以看到,在启动时和单击go按钮时,当弹出导航完成帖子时调用导航完成事件但是不应加载的xbox网页不可见
我已经调整了稍微可以看到的演示中显示的xaml,所以我没有使用单个ContentRoot网格,而是使用WebView嵌套了包含地址TextBox和Button的水平堆栈面板在它下面。
我也使用了WebView而不是手机:WebBrowser,如教程中所示,因为WP8.1中似乎不存在,所以这很可能就是问题......
有没有人知道我做错了什么,或者任何人都可以评论我使用的风格是否可以改进。
学习新平台始终是一项挑战,因为您可以尝试以不同方式完成工作。 Windows Phone肯定与我更熟悉的Android完全不同!
提前致谢
编辑:
我尝试通过注释我对页面内容(文本框,按钮和webview)的内容以及从教程中插入示例xaml来更改XAML代码,如下所示
<!--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>
但是我得到的问题与之前的问题完全相同,因为webview只是显示黑色,而且通常看起来更糟......
我猜这个问题是由于预期的手机:我正在使用的WebBrowser和WebView之间存在差异。
答案 0 :(得分:6)
我找到并解决了这个问题。问题在于我在xaml中声明了webview:
<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"/>
将其更改为
<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"/>
它现在有效。出现的问题是使用Height =&#34; Auto&#34;。这是将高度设置为0,因此实际上并没有显示。
答案 1 :(得分:1)
我意识到这是一个Windows Phone 8教程,但是想到Windows 8.1肯定不会有很大差异吗?
您正在制作 Windows Runtime 应用,这与 Silverlight 应用有很大不同,就像该教程之一一样。
如果你想为Windows Phone 8.1(以及Windows 8.1)开发,你应该遵循WinRT教程,我建议你这个:
http://channel9.msdn.com/Series/Windows-Phone-8-1-Development-for-Absolute-Beginners