Я создаю проект Wpf, который демонстрирует, как использовать WebView для навигации по файлу html внутри приложения, но не удается.
Основной код файла cs приведен ниже:
public MainWindow()
{
this.InitializeComponent();
this.wv.ScriptNotify += Wv_ScriptNotify;
this.Loaded += MainPage_Loaded;
}
private async void Wv_ScriptNotify(object sender, Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT.WebViewControlScriptNotifyEventArgs e)
{
//await (new MessageDialog(e.Value)).ShowAsync();
textBlock.Text = e.Value;
//返回结果给html页面
await this.wv.InvokeScriptAsync("recieve", new[] { "hehe, 我是个结果" });
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
//我们事先写好了一个本地html页面用来做测试
this.wv.Source = new Uri("ms-appx-web://Assets/index.html");
//this.wv.Source = new Uri("http://www.baidu.com");
}
И индекс файла html. html находится внутри проекта и находится по адресу Assets/index.html
. Его исходный код находится здесь: https://github.com/tomxue/WebViewIssueInWpf/raw/master/WpfApp3/Assets/index.html
Я поместил код проекта на GitHub: https://github.com/tomxue/WebViewIssueInWpf.git
Если проект работает хорошо, когда WebView посещает внутренний файл html, он должен сначала показать кнопку. Но я ничего не видел.
Подробнее:
Согласно принятому ответу (спасибо Павлу Аниховскому), я изменил свой код, как показано ниже, и теперь он работает.
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
//我们事先写好了一个本地html页面用来做测试
//this.wv.Source = new Uri("ms-appx-web://Assets/index.html");
//this.wv.Source = new Uri("http://www.baidu.com");
var html = File.ReadAllText("../../Assets\\index.html");
wv.NavigateToString(html);
}