2010-04-06 10 views

Respuesta

96

El WebBrowser tiene un método NavigateToString que puede usar para navegar al contenido HTML. Si usted quiere ser capaz de unirse a ella, puede crear una propiedad adjunta que simplemente puede llamar al método cuando el valor cambia:

public static class BrowserBehavior 
{ 
    public static readonly DependencyProperty HtmlProperty = DependencyProperty.RegisterAttached(
     "Html", 
     typeof(string), 
     typeof(BrowserBehavior), 
     new FrameworkPropertyMetadata(OnHtmlChanged)); 

    [AttachedPropertyBrowsableForType(typeof(WebBrowser))] 
    public static string GetHtml(WebBrowser d) 
    { 
     return (string)d.GetValue(HtmlProperty); 
    } 

    public static void SetHtml(WebBrowser d, string value) 
    { 
     d.SetValue(HtmlProperty, value); 
    } 

    static void OnHtmlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     WebBrowser wb = d as WebBrowser; 
     if (wb != null) 
      wb.NavigateToString(e.NewValue as string); 
    } 
} 

Y la usaba como tal (donde lcl es el xmlns-espacio de nombres -alias):

<WebBrowser lcl:BrowserBehavior.Html="{Binding HtmlToDisplay}" /> 
+0

El segundo argumento para OnHtmlChanged debe ser de tipo DependencyPropertyChangedEventArgs. –

+0

Adam, tienes razón, arreglado para reflejar eso. ¡Gracias! –

+0

Agregué esto a mi código pero no me permite editarlo (una característica requerida). Soy bastante nuevo en wpf, por lo que no estoy seguro de qué cambiar para permitirme editar el html. –

Cuestiones relacionadas