chr
7 天以前 43a0207d207390abdeeb3ab9155eebf03edd7b1a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
{
    /// <summary>
    /// UserControl1.xaml 的交互逻辑
    /// </summary>
    [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<TestData> msg = JsonUtil.Deserialize<RequestData<TestData>>(uri);
 
 
            ObservableCollection<PdmBom> boms = pdm.RefreshBomList(SwApp.IActiveDoc2);
 
 
            webView.CoreWebView2.PostWebMessageAsString(JsonUtil.Serialize(new ResultData
            {
                key = msg.key,
                id = msg.id,
                data = boms
            }));
        }
    }
}