Мне нужно создать простой редактор HTML. Я знаю настольное приложение, я могу получить доступ к DOM и установить DesignMode=true. Как я могу сделать это для WebView в приложении winrt?
Как сделать WebView редактируемым на winrt?
Ответы (1)
Похоже, я нашел решение, как установить DesignMode для WebView в приложениях WinRT.
Мне просто нужно было вызвать метод javascript, который мог бы изменить свойство document.designMode на «on»
В моем случае я реализовал расширение для 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);
}
}
Это позволяет мне включать\выключать DesignMode из XAML
<WebView x:Name="webViewBody" Source="about:blank" controls:WebViewEx.DesignMode="true"/>
Обязательным требованием для вызова методов javascript является инициализация веб-просмотра. В моем случае я установил для свойства источника значение «о: пусто».
person
mktn
schedule
20.03.2014