Как прочитать существующий HTML-файл в элементе управления WebBrowser в WP7? - PullRequest
0 голосов
/ 27 сентября 2011

Как прочитать существующий HTML-файл в элементе управления WebBrowser в WP7?

Я пробовал:

  1. Поток потока = Assembly.GetExecutingAssembly (). GetManifestResourceStream ("abc.htm"); StreamReader reader = новый StreamReader (поток); string html = reader.ReadToEnd (); Browser.NavigateToString (HTML);

  2. Browser.Navigate (новый Uri ("abc.htm", UriKind.Relative));

  3. var rs = Application.GetResourceStream (новый Uri ("abc.htm", UriKind.Relative)); StreamReader sr = новый StreamReader (rs.Stream); string html = sr.ReadToEnd (); Browser.NavigateToString (HTML);

Все три не работают. Методы 1 и 3 дают исключение NullReferenceException, поскольку поток возвращает значение null, в основном он не читает мой HTML-файл.

В чем здесь проблема? Как я могу это исправить?

Ответы [ 5 ]

1 голос
/ 27 сентября 2011

Когда вы используете номер 3, убедитесь, что у вашего HTML-файла тип сборки установлен на «Содержимое».

0 голосов
/ 05 июня 2012

Работает нормально, если добавить команду внутри кнопки, например:

    private void htmlLoader(object sender, EventArgs e)
    {
        var rs = Application.GetResourceStream(new Uri("abc.html", UriKind.Relative));
        StreamReader sr = new StreamReader(rs.Stream);
        string html = sr.ReadToEnd();
        this.MyBrowser.NavigateToString(html);
    }
0 голосов
/ 24 мая 2012

Для первого и третьего: установите для свойства «Создать действие» html-файла значение «Ресурс», в противном случае появится NullReferenceException

Для второго: элемент управления обозревателя в WP7 не может перейти непосредственно к добавленному html-файлув проекте.Для этого HTML-файл должен находиться в изолированном хранилище.Попробуйте, надеюсь, это сработает.

(Отметьте ответ, если это полезно).

0 голосов
/ 28 сентября 2011

Хорошо, вот пример:

в MainPage.xaml:

<Grid x:Name="LayoutRoot" Background="Transparent">
    <phone:WebBrowser x:Name="MyBrowser" 
                      HorizontalAlignment="Stretch"  
                      VerticalAlignment="Stretch" />
</Grid> 

в MainPage.xaml.cs

    public MainPage()
    {
        InitializeComponent();
        var rs = Application.GetResourceStream(new Uri("abc.html", UriKind.Relative)); 
        StreamReader sr = new StreamReader(rs.Stream); 
        string html = sr.ReadToEnd(); 
        this.MyBrowser.NavigateToString(html);
    }

убедитесь, что у вас есть файл "abc.html" (проверьте на опечатку, ваш пример кода "abc. htm ") в корневой папке вашего проекта. Создайте действие как «Содержимое» и «Копировать в выходной каталог» как «Не копировать». Должна отобразиться страница в браузере.

0 голосов
/ 28 сентября 2011

Если вы хотите использовать опцию 2, вы должны сначала скопировать файл в изолированное хранилище, если ему нужно сослаться на какие-либо другие файлы, поскольку невозможно использовать относительные пути (к другим документам, изображениям, js, css и т. Д.) Внутри документ, если он загружен непосредственно из XAP.

...