Feedback

C# - Apps: WebView HTML binden

Veröffentlicht von am 3/15/2015
(0 Bewertungen)
Das WebView-Control bietet von sich aus keine Möglichkeit den HTML-Quellcode zu binden.
Die hier gezeigte angefügte Eigenschaft implementiert zumindest den machbaren Ansatz. Man kann den HTML-Code setzen, das Abrufen ist nicht realisierbar.

All zu schnell hinter einander aktualisieren sollte man die Eigenschaft jedoch auch nicht, da die App sonst hängen bleibt. Auch der VS Debugger half mir nicht beim Lösen des Problems.

Benötigte Namespaces
System.ComponentModel
Windows.UI.Xaml
Windows.UI.Xaml.Controls
/// <summary>
/// Stellt Hilfsmethoden für die Verwendung mit einem <see cref="System.UI.Xaml.Controls.WebView"/> bereit.
/// </summary>
public static class WebViewHelper
{
    /// <summary>
    /// Ruft den über die <see cref="SetHtml"/>-Methode geladenen HTML Code ab. 
    /// </summary>
    /// <param name="webView">Das <see cref="System.UI.Xaml.Controls.WebView"/> für das der HTML-Code gesetzt wurde.</param>
    /// <returns>Der Für das angegebene <see cref="System.UI.Xaml.Controls.WebView"/> gesetzte HTML-Code.</returns>
    [EditorBrowsable(EditorBrowsableState.Never)]
    public static string GetHtml(WebView webView)
    {
        return (string)webView.GetValue(HtmlProperty);
    }

    /// <summary>
    /// Lädt den angegebenen HTML Code in dem angegebenen <see cref="System.UI.Xaml.Controls.WebView"/> als Content.
    /// </summary>
    /// <param name="webView">Das <see cref="System.UI.Xaml.Controls.WebView"/> in dem der angegebene HTML-Code angezeigt werden soll.</param>
    /// <param name="htmlCode">Der anzuzeigende HTML-Code.</param>
    public static void SetHtml(WebView webView, string htmlCode)
    {
        webView.SetValue(HtmlProperty, htmlCode);
    }

    /// <summary>
    /// Bezeichnet die angefügte Html-Abhängigkeitseigenschaft.
    /// </summary>
    public static readonly DependencyProperty HtmlProperty = DependencyProperty.RegisterAttached(
        "Html", typeof(string), typeof(WebViewHelper), new PropertyMetadata(string.Empty, OnHtmlChanged));

    private static void OnHtmlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var webView = d as WebView;
        if (webView != null)
        {
            webView.NavigateToString((string)e.NewValue);
        }
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!