[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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s