내보내기(0) 인쇄
모두 확장

방법: Windows Phone용 WebBrowser 컨트롤을 사용하여 정적 웹 콘텐츠 표시

2012-02-09

WebBrowser 컨트롤을 사용하면 서식 있는 정적 콘텐츠를 응용프로그램 내에서 표시할 수 있습니다. 예를 들어 개발자는 사용자가 언제든지 액세스할 수 있는 도움말 텍스트를 응용프로그램 패키지 내에 포함할 수 있습니다. 또는 WebBrowser 컨트롤을 사용하여 응용프로그램이 SaveToString()()()() 메서드를 통해 격리된 저장소에 저장한 정적 웹 콘텐츠를 표시할 수 있습니다.

다음 코드 샘플은 응용프로그램에서 격리된 저장소로 정적 콘텐츠를 추가하는 방법과 WebBrowser 컨트롤을 사용하여 격리된 저장소에서 해당 콘텐츠를 보는 방법을 보여 줍니다. 격리된 저장소에 대한 자세한 내용은 Windows Phone의 격리된 저장소 개요를 참조하십시오.

프로젝트에 정적 콘텐츠를 추가하려면

  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. 솔루션 탐색기에서 파일 이름을 클릭합니다. 속성 창의 Build Action 섹션이 Content로 설정되어 있는지 확인합니다.

코드 숨김 페이지에 다음 리소스를 추가하여 다음 네임스페이스를 포함합니다. 예를 들어 기본 명명 규칙으로 기본 페이지를 사용 중인 경우 MainPage.xaml.cs를 업데이트합니다.

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

도구를 사용하거나 수동으로 WebBrowser 컨트롤을 추가할 수 있습니다.

도구를 사용하여 WebBrowser 컨트롤 추가

도구를 사용하여 WebBrowser 컨트롤을 추가하려면

  1. Visual Studio에서 새 솔루션 또는 기존 솔루션을 엽니다.

  2. 프로젝트의 XAML 파일이 표시되는 동안 Toolbox를 클릭하고 WebBrowser 컨트롤을 단말기 이미지로 끌어옵니다.

수동으로 WebBrowser 컨트롤 추가

XAML에서 WebBrowser 컨트롤을 만들어 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));
}


표시:
© 2014 Microsoft