WPF C# WebView

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;
        }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください