Я потратил полчаса, пытаясь выяснить эту утомительную проблему, когда вы не можете перемещаться по строкам, если не установлено свойство Source.
В конце концов, я нашел обходной путь, поскольку WebView2 требует абсолютный путь к html-файлу или ничего больше.
Markdown.Focus();
Markdown.BringIntoView();
Markdown.Source = new Uri(Path.GetFullPath("null.html"), UriKind.Absolute);
Markdown.Visibility = Visibility.Visible;
Markdown.NavigateToString(htContent);
Даже после всего этого. Он по-прежнему говорит: «Вам нужно установить свойство Source!». Это сводит меня с ума.
null.html
также является допустимым html-файлом. Он просто пуст, так как HTML, который мне нужно отобразить, слишком динамичен для буферизации в файл.
@PoulBak Эй, я знаю, что вы только что опубликовали ответ, но в любом случае он находится в последней строке с NavigateToString.
Я думаю, он не любит пустой документ (пустой документ не html
). Но мой ответ должен работать.
Вместо кода, который у вас есть, попробуйте следующее:
await Markdown.EnsureCoreWebView2Async();
Markdown.NavigateToString(htContent);
Теперь вам не нужно устанавливать свойство Source
.
Кстати: вам также не нужно устанавливать другие свойства, элемент управления WebView2
отображается автоматически.
Может ли WPF вызывать асинхронные методы? Функция, которая мне нужна, отвечает на события KeyDown. Я смогу проверить это через ~ 15 м.
Отметьте метод обработчика событий знаком async
.
Ну, да. Не думал, что WPF будет знать, как идентифицировать и вызывать coro, думаю, я все равно собираюсь узнать. Я дам вам знать, как это происходит.
Хорошие новости, это прошло. Просто нужно исправить отсутствующий файл WebView2Loader.dll.
В свойствах проекта выберите «Сборка», выберите «x86» или «x64», а не «anycpu».
Я думаю, вы должны пропустить первые 2 строки или переместить их под строку, где вы устанавливаете источник. В какой строке вы получаете ошибку?