В своей публикации для Windows Phone 7 Series: чтение RSS-каналов я показал, как читать RSS-каналы с помощью XmlReader. Хотя я надеялся начать улучшать пользовательский интерфейс, я нашел еще кое-что, что нужно сделать. В этой публикации я покажу вам, как использовать элемент управления WebBrowser для отображения содержимого RSS. Пример решения также здесь для загрузки.
Элемент управления WebBrowser — это нечто новое в наборе элементов управления Windows Phone 7 Silverlight. Поскольку у нас есть платформа только с одним и единственным браузером IE (пока нет собственного кода, помните), мы рады, что можем использовать функциональность браузера в наших приложениях. Я не считаю управление WebBrowser чем-то удобным, если мы учитываем удобство использования, но поскольку у нас нет лучшего выбора, я не вижу проблем с его использованием.
Изменения с последней публикации
Прежде чем мы начнем использовать элемент управления WebBrowser, я кратко расскажу о том, что я изменил за это время:
- Я сделал несколько небольших изменений в RSS-клиенте, чтобы контент читался правильно.
- Я переместил список записей фида в область приложения, чтобы он был доступен для всех страниц моего приложения.
- Я добавил новую страницу, которая отображает выбранную запись в фиде, и обновил кнопку «Читать далее» на главной странице, чтобы перенаправить пользователя на страницу ввода фида.
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, чтобы использовать это решение.