[Tips and Tricks] Windows Phone, Bindings y el control WebBrowser

Internet-Explorer-10-Metro-iconProblema

El control WebBrowser proporciona una solución efectiva ante ciertos problemas en nuestras aplicaciones Windows Phone:

  • Mostrar contenido HTML, por ejemplo una noticia.
  • Mostrar al usuario una web.
  • Interacción con una web.

Es un control versátil y bastante potente. La forma más habitual de mostrar una cadena con contenido HTML es utilizar su método NavigateToString. Sin embargo, si estamos implementando un patrón MVVM, nos rompe un poco el esquema…

¿Qué podemos hacer?

Solución

Para resolver nuestro problema necesitaríamos una propiedad bindable en el control y eso es fácil…

Vamos a crear un helper que nos permita resolver el problema:

public static class BindableWebBrowserHelper
{
     public static readonly DependencyProperty HtmlProperty = DependencyProperty.RegisterAttached(
     "Html", typeof(string), typeof(BindableWebBrowserHelper), new PropertyMetadata(OnHtmlChanged))

     public static string GetHtml(DependencyObject dependencyObject)
     {
          return (string)dependencyObject.GetValue(HtmlProperty);
     }

     public static void SetHtml(DependencyObject dependencyObject, string value)
     {
          dependencyObject.SetValue(HtmlProperty, value);
     }

     private static void OnHtmlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
     {
          var browser = d as WebBrowser;
          browser.NavigateToString(e.NewValue.ToString());
     }
}

Y para usarlo:

<phone:WebBrowser helpers:BindableWebBrowserHelper.Html="{Binding HtmlContent}" />

Fácil, ¿verdad?

Más información

3 pensamientos en “[Tips and Tricks] Windows Phone, Bindings y el control WebBrowser

  1. Pingback: Tips & Tricks de desarrollo para Windows Phone - MSDN España - Site Home - MSDN Blogs

Deja un comentario