导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何使用 Windows Phone 8 的 WebBrowser 控件显示静态 Web 内容

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

可以使用 WebBrowser 控件在应用程序中显示已设置格式的静态内容。例如,开发人员可能希望在应用程序包中包含帮助文本,以便用户可以随时访问。或者,您也可以使用 WebBrowser 控件显示应用程序已使用 SaveToString() 方法保存到独立存储的静态 Web 内容。

以下代码示例介绍如何将应用程序中的静态内容部分添加到独立存储中,以及如何使用 WebBrowser 控件从独立存储中查看该内容。有关独立存储的详细信息,请参阅 Windows Phone 8 的数据

本主题包括以下部分。

向项目中添加静态内容的步骤

  1. 使用以下 HTML 代码创建一个名为 readme.htm 的 HTML 文件:

    <html>
       <head><title>Sample Readme File</title></head>
       <body>
          <p>Sample Readme Content</p>
       </body>
    </html>
    
    
  2. 在 Visual Studio 中打开一个新的或现有的解决方案。

  3. “解决方案资源管理器”中,右键单击您项目的名称,单击“添加”,然后单击“现有项”

  4. 导航到 readme.htm 文件的位置,选择该文件,然后单击“添加”

  5. “解决方案资源浏览器”中,单击该文件的名称。确认“属性”窗口中的“生成操作”部分描述“内容”。

在代码隐藏页面中添加以下资源以包含以下命名空间。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。

using System.IO.IsolatedStorage;
using System.IO;
using System.Windows.Resources;

可以使用工具添加 WebBrowser 控件,也可以手动添加 WebBrowser 控件。

使用工具添加 WebBrowser 控件

使用工具添加 WebBrowser 控件的步骤

  1. 在 Visual Studio 中打开一个新的或现有的解决方案。

  2. 查看项目的 XAML 文件时,单击“工具箱”,将 WebBrowser 控件拖动到设备的图像中。

手动添加 WebBrowser 控件

您可以通过在 XAML 中创建一个 WebBrowser 控件来手动添加此控件。

在 XAML 中创建 WebBrowser 控件的步骤

  1. 打开将在其中添加 WebBrowser 控件的页面的 XAML 文件。在“解决方案资源浏览器”中,右键单击该页面的 .xaml 文件(默认情况下,新应用程序的主页名为“MainPage.xaml”),然后选择“打开”

  2. 在 ContentGrid 中添加一个 WebBrowser 控件。例如:

    
    <Grid x:Name="ContentGrid" Grid.Row="1">
        <phone:WebBrowser HorizontalAlignment="Left" Margin="20,50,0,0" Name="webBrowser1" VerticalAlignment="Top" Height="500" Width="430" />
    </Grid>
    
    

修改代码隐藏页面以包含以下两个函数,这两个函数将帮助向独立存储中添加静态文件。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。

    private void SaveFilesToIsoStore()
    {
        //These files must match what is included in the application package,
        //or BinaryStream.Dispose below will throw an exception.
        string[] files = {
            "readme.htm"
        };

        IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

        if (false == isoStore.FileExists(files[0]))
        {
            foreach (string f in files)
            {
                StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative));
                using (BinaryReader br = new BinaryReader(sr.Stream))
                {
                    byte[] data = br.ReadBytes((int)sr.Stream.Length);
                    SaveToIsoStore(f, data);
                }
            }
        }
    }

    private void SaveToIsoStore(string fileName, byte[] data)
    {
        string strBaseDir = string.Empty;
        string delimStr = "/";
        char[] delimiter = delimStr.ToCharArray();
        string[] dirsPath = fileName.Split(delimiter);

        //Get the IsoStore.
        IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

        //Re-create the directory structure.
        for (int i = 0; i < dirsPath.Length - 1; i++)
        {
            strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]);
            isoStore.CreateDirectory(strBaseDir);
        }

        //Remove the existing file.
        if (isoStore.FileExists(fileName))
        {
            isoStore.DeleteFile(fileName);
        }

        //Write the file.
        using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName)))
        {
            bw.Write(data);
            bw.Close();
        }
    }

修改代码隐藏页面以更新并包含以下两个函数,这两个函数将向独立存储中添加静态文件并在嵌入的 WebBrowser 控件中显示该内容。您将需要覆盖现有的 MainPage 函数。

public MainPage()
{    InitializeComponent();

    SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;

    webBrowser1.Loaded += WebBrowser_OnLoaded;
}

private void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
{
    SaveFilesToIsoStore();
    webBrowser1.Navigate(new Uri("readme.htm", UriKind.Relative));
}


Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft