WebViewのインストール
- 「NuGet パッケージの管理」で「Microsoft.Toolkit.Wpf.UI.Controls.WebView」をソリューションにインストールする
- ツールボックスから「WebView」を選択して利用する
ローカルWebコンテンツをロードする
プロジェクトに配置したHtmlファイル( HtmlPage.html )を開く
cssファイル等もプロジェクトに配置する
webView1.NavigateToLocalStreamUri(new Uri("HtmlPage.html", UriKind.Relative), new StreamUriResolver());
StreamUriResolverクラスの追加
using Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT;
private class StreamUriResolver : IUriToStreamResolver
{
public Stream UriToStream(Uri uri)
{
string exeFolder = AppDomain.CurrentDomain.BaseDirectory;
string fileName = exeFolder + uri.LocalPath.TrimStart('/');
return new FileStream(fileName, FileMode.Open);
}
}
input(テキストボックス)の値を変更する
Idがanimalのタグの値を”猫”に書き換える
string functionString = string.Format("document.getElementById('animal').setAttribute('value','{0}');", "猫");
webView1.InvokeScriptAsync("eval", new string[] { functionString });
java scriptの実行
webView1.InvokeScriptAsync("calcRouteFromTextBox", null);
string[] args = new string[] { Lat, Lng, pointName };
webView1.InvokeScriptAsync("newMaker", args);
WebViewからの通知を受け取る
JavaScript
function getDateTime() {
window.external.notify(new Date().toTimeString()); // 文字列
}
WebViewにScriptNotifyイベントを追加する
※ IsScriptNotifyAllowed=”True”が必要
<Controls:WebView x:Name="webView1" ScriptNotify="webView1_ScriptNotify" IsScriptNotifyAllowed="True"/>
private void webView1_ScriptNotify(object sender, WebViewControlScriptNotifyEventArgs e)
{
textBlock1.Text = e.Value;
}