Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使WebView在winrt上可编辑?_Webview_Winrt Xaml - Fatal编程技术网

如何使WebView在winrt上可编辑?

如何使WebView在winrt上可编辑?,webview,winrt-xaml,Webview,Winrt Xaml,我需要创建简单的HTML编辑器。我知道桌面应用程序可以访问DOM并设置DesignMode=true。如何在winrt应用程序中为WebView设置此模式?因此,我似乎找到了在winrt应用程序中为WebView设置设计模式的解决方案 我只需要调用可以将document.designMode属性更改为“on”的javascript方法 在我的例子中,我实现了WebView的扩展,其中添加了DependencyProperty public static class WebViewEx {

我需要创建简单的HTML编辑器。我知道桌面应用程序可以访问DOM并设置DesignMode=true。如何在winrt应用程序中为WebView设置此模式?

因此,我似乎找到了在winrt应用程序中为WebView设置设计模式的解决方案

我只需要调用可以将document.designMode属性更改为“on”的javascript方法

在我的例子中,我实现了WebView的扩展,其中添加了DependencyProperty

public static class WebViewEx
{
    public static readonly DependencyProperty DesignModeProperty = DependencyProperty.RegisterAttached(
                                                                               "DesignMode", typeof(bool),
                                                                               typeof(WebViewEx),
                                                                               new PropertyMetadata(null, OnDesignModePropertyChanged));

    private async static void OnDesignModePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
    {
        if (DesignMode.DesignModeEnabled)
            return;

        WebView view = dependencyObject as WebView;
        if (view == null)
            return;

        if (e.NewValue == e.OldValue)
            return;

        await view.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
        {
            if ((bool)e.NewValue)
            {
                await view.InvokeScriptAsync("eval", new string[] { "document.designMode = \"on\";" });
            }
            else
            {
                await view.InvokeScriptAsync("eval", new string[] { "document.designMode = \"off\";" });
            }
        });
    }

    public static void SetDesignMode(DependencyObject element, bool value)
    {
        element.SetValue(DesignModeProperty, value);
    }
    public static bool GetDesignMode(DependencyObject element)
    {
        return (bool)element.GetValue(DesignModeProperty);
    }
}
允许我从XAML打开\关闭设计模式

<WebView x:Name="webViewBody" Source="about:blank" controls:WebViewEx.DesignMode="true"/>

调用javascript方法的强制性要求是webview应该初始化。在本例中,我将源属性设置为“about:blank”