Попробуйте:
public static void DocumentPropertyChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
if (!(target is WebBrowser)) // Handles null and other weird things.
throw new Exception("target is not a WebBrowser!");
WebBrowser browser = target as WebBrowser;
string document = e.NewValue as string;
if (document == null)
throw new Exception("e.NewValue is not a string!");
browser.NavigateToString(document);
var doc = browser.Document as HTMLDocument;
if (doc != null)
{
doc.execCommand("FontSize", false, 12);
doc.execCommand("FontFamily", false, "Arial");
}
else
{
throw new Exception("browser.Document is not an HTMLDocument!");
}
}
Я думаю для этого требуется ссылка на Microsoft.ms html .dll и оператор using mshtml;
, если вы этого еще не сделали пока.
Я добавил все броски, потому что я не уверен на 100%, в чем проблема, не запустив этот код.
Так что я надеюсь, что это того стоит это помогает.
Редактировать ...
В документации указано, что NavigateToString
загружает содержимое асинхронно .
При назначении doc
после навигации вышеуказанный код появляется для работы с очень короткими документами, но этому нельзя доверять. Назначение doc
до того, как навигация не работает.
Лучшим решением может быть обработка события WebBrowser.Navigated
, чтобы убедиться, что содержимое полностью загружено перед взаимодействием со свойством WebBrowser.Document
:
XAML:
<WebBrowser Name="browser" Navigated="Browser_Navigated"/>
CS:
public static void DocumentPropertyChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
WebBrowser browser = target as WebBrowser;
if (browser != null)
{
string document = e.NewValue as string;
browser.NavigateToString(document);
}
}
private void Browser_Navigated(object sender, NavigationEventArgs e)
{
var doc = webBrowser.Document as HTMLDocument;
if (doc != null)
{
doc.execCommand("FontSize", false, 12);
doc.execCommand("FontFamily", false, "Arial");
}
}
Примечание. Этот код запустит ваш execCommand
(чего у меня нет проверено кстати) на каждом документе, загруженном в WebBrowser
. Если это проблема, мы можем ее исправить.