Статьи

Разработка для Windows Phone 7: использование элемента управления WebBrowser

В своей публикации для Windows Phone 7 Series: чтение RSS-каналов я показал, как читать RSS-каналы с помощью XmlReader. Хотя я надеялся начать улучшать пользовательский интерфейс, я нашел еще кое-что, что нужно сделать. В этой публикации я покажу вам, как использовать элемент управления WebBrowser для отображения содержимого RSS. Пример решения также здесь для загрузки.

Элемент управления WebBrowser — это нечто новое в наборе элементов управления Windows Phone 7 Silverlight. Поскольку у нас есть платформа только с одним и единственным браузером IE (пока нет собственного кода, помните), мы рады, что можем использовать функциональность браузера в наших приложениях. Я не считаю управление WebBrowser чем-то удобным, если мы учитываем удобство использования, но поскольку у нас нет лучшего выбора, я не вижу проблем с его использованием.

Изменения с последней публикации

Прежде чем мы начнем использовать элемент управления WebBrowser, я кратко расскажу о том, что я изменил за это время:

  1. Я сделал несколько небольших изменений в RSS-клиенте, чтобы контент читался правильно.
  2. Я переместил список записей фида в область приложения, чтобы он был доступен для всех страниц моего приложения.
  3. Я добавил новую страницу, которая отображает выбранную запись в фиде, и обновил кнопку «Читать далее» на главной странице, чтобы перенаправить пользователя на страницу ввода фида.

NB! В конце этой публикации вы найдете решение Visual Studio 2010 с моей пока не очень выдающейся работой над этим примером. Не стесняйтесь загружать и изменять его, как вам нравится. Не забывайте, что этот пример — моя довольно грубая игровая площадка, и я не ожидаю найти там каких-либо удивительных решений, потому что я полностью занят в Silverlight.

Использование контроля веб-браузера

Вы можете увидеть результат ее эона изображения. Когда пользователь выбирает запись в блоге из списка публикаций и нажимает кнопку «Читать далее», приложение перенаправляет пользователя на страницу публикации, находит запрашиваемую запись из списка публикаций и отображает содержимое публикации в элементе управления WebBrowser.

В настоящее время WebBrowser использует настройки по умолчанию без стилей, определенных блогом. Вы все еще можете прочитать сообщение, и если вы подключены к Интернету, вы также можете увидеть изображения, использованные в выбранном сообщении.

Кэширование контента сильно зависит от компонента WebBrowser, и в настоящее время я не занимаюсь кэшированием и чтением в автономном режиме. В будущих версиях я тоже буду реализовывать эту функциональность.

Чтобы увеличить содержимое в элементе управления WebBrowser, вы можете дважды щелкнуть мышью по области WebBrowser. Я надеюсь, что смогу найти лучшее и более удобное решение для масштабирования, но в данный момент давайте использовать то, что мы получили из коробки.

Код

Для начала давайте посмотрим код, который я написал для кнопки «Читать дальше».

private void button1_Click(object sender, System.Windows.RoutedEventArgs e)

{

var item = (FeedItem)listBox1.SelectedItem;

NavigationService.Navigate(new Uri("/Post.xaml?url=" + item.Link,
UriKind.Relative));

}

 

Этот код мало что делает. Он просто получает запись RSS из списка и перенаправляет пользователя на страницу публикации, используя URL записи в качестве параметра строки запроса.

Вот как содержимое сообщений в блоге загружается в элемент управления WebBrowser. Я действительно очень сожалею о тех элементах управления n00bish guard, которые не уведомляют пользователей о проблемах. Но, по крайней мере, вы получите представление о том, как загрузить данные в элемент управления WebBrowser.

void Post_Loaded(object sender, RoutedEventArgs e)

{

var url = NavigationContext.QueryString["url"];

if (string.IsNullOrEmpty(url))

return;



var items = ((App)App.Current).FeedItems;

if (items == null)

return;





var itemQuery = from i in items

where i.Link.Equals(url)

select i;

var item = itemQuery.FirstOrDefault();



if (item == null)

return;



textBlock1.Text = item.Title;

webBrowser1.NavigateToString(item.Content);

}

Как видите, элемент управления WebBrowser очень прост в использовании. Большая часть кода при публикации события загрузки страницы связана с запросом данных и предотвращением ошибок. Элемент управления WebBrowser требует только одну строку кода для отображения содержимого для пользователя.

Что происходит дальше?

Следующим шагом я попытаюсь поиграть с управлением WebBrowser, чтобы узнать, что я могу с ним сделать, а какие классные вещи не возможны. Также я начинаю исследовать локальное хранилище для реализации автономного чтения. Когда какая-то милая толстая муза сидит на моей голове с блестящими идеями в изобразительном искусстве, я тоже буду иметь дело с пользовательским интерфейсом.

Скачать

Загрузите файлы решения из окна загрузки ниже. Вам нужно Visual Studio 2010 или Visual Studio 2010 Express, чтобы использовать это решение.