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