Problema
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
- Dev Center: WebBrowser control for Windows Phone
Buenas,
¿ podrías solucionar el tema del código fuente ?
Esta todo en una línea y con caracteres HTML!
Gracias por el aviso!
Pingback: Tips & Tricks de desarrollo para Windows Phone - MSDN España - Site Home - MSDN Blogs