using Microsoft.Web.WebView2.Core; using PdmSwPlugin.Common; using PdmSwPlugin.Common.Interface; using PdmSwPlugin.PDM; using PdmSwPlugin.PDM.Entity; using PdmSwPlugin.Test.UIHandler; using PdmSwPlugin.Util; using PdmSwPlugin.Util.Entity; using SolidWorks.Interop.sldworks; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.InteropServices; using System.Windows.Controls; namespace PdmSwPlugin.Test { /// /// UserControl1.xaml 的交互逻辑 /// [PdmSwPlugin(Title = "测试Web")] public partial class TestWeb : UserControl, ISwAppSetter { public TestWeb() { InitializeComponent(); InitializeAsync(); DataContext = new TestWebModel(null, null); } public SldWorks SwApp { get; set; } private PdmControl pdm { get; set; } public void SetSwApp(SldWorks SwApp) { this.SwApp = SwApp; pdm = new PdmControl(SwApp); TestWebModel model = DataContext as TestWebModel; model.SwApp = SwApp; model.pdm = pdm; } async void InitializeAsync() { //显示初始化CoreWebView2 await webView.EnsureCoreWebView2Async(); //打开开发工具 webView.CoreWebView2.OpenDevToolsWindow(); webView.CoreWebView2.AddHostObjectToScript("testPdm", DataContext); webView.CoreWebView2.WebMessageReceived += UpdateAddressBar; //虚拟映射 // "C:\\Workspace\\learn\\wpf_ui\\dist" // "C:\\Workspace\\PDM\\Web_UI\\pdm" webView.CoreWebView2.SetVirtualHostNameToFolderMapping("ui", "C:\\Workspace\\learn\\wpf_ui\\dist", CoreWebView2HostResourceAccessKind.Allow); //导航 // webView.CoreWebView2.Navigate("http://ui/index.html"); webView.CoreWebView2.Navigate("http://localhost:8080"); } void UpdateAddressBar(object sender, CoreWebView2WebMessageReceivedEventArgs args) { string uri = args.TryGetWebMessageAsString(); RequestData msg = JsonUtil.Deserialize>(uri); ObservableCollection boms = pdm.RefreshBomList(SwApp.IActiveDoc2); webView.CoreWebView2.PostWebMessageAsString(JsonUtil.Serialize(new ResultData { key = msg.key, id = msg.id, data = boms })); } } }