using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using Microsoft.Extensions.DependencyInjection; using System; using System.Windows; using System.Windows.Controls; namespace BBWYB.Client.Views.WebB { /// /// WebB_KPI.xaml 的交互逻辑 /// public partial class WebB_KPI : Page { private WebView2Manager w2m; private bool isNavigated; private GlobalContext globalContext; public WebB_KPI() { InitializeComponent(); this.Loaded += WebB_KPI_Loaded; ; this.Unloaded += WebB_KPI_Unloaded; WeakReferenceMessenger.Default.Register(this, (o, x) => { this.Dispatcher.Invoke(() => { _ = w2m.wb2.ExecuteScriptAsync("window.location.reload();"); }); }); } private void WebB_KPI_Unloaded(object sender, RoutedEventArgs e) { grid.Children.Remove(w2m.wb2); w2m.Close(); WeakReferenceMessenger.Default.UnregisterAll(this); } private void WebB_KPI_Loaded(object sender, RoutedEventArgs e) { var sp = (App.Current as App).ServiceProvider; using (var s = sp.CreateScope()) { w2m = s.ServiceProvider.GetRequiredService(); globalContext = s.ServiceProvider.GetRequiredService(); } #if DEBUG var url = "http://localhost:8080/#/performance"; var registerName = "webTestContext"; #else var url = "http://qtbbwy.qiyue666.com/#/performance"; var registerName = "webContext"; #endif w2m.CoreWebView2InitializationCompleted = (e) => { w2m.wb2.CoreWebView2.AddHostObjectToScript(registerName, this.globalContext); isNavigated = true; w2m.wb2.CoreWebView2.Navigate(url); }; w2m.Init("bbwyb_web"); w2m.wb2.SetValue(Grid.RowProperty, 1); w2m.wb2.Margin = new Thickness(1, 0, 1, 0); //grid.Children.Clear(); grid.Children.Add(w2m.wb2); if (w2m.IsInitializationCompleted && !isNavigated) { w2m.wb2.CoreWebView2.Navigate(url); //w2m.wb2.CoreWebView2.NavigateToString(content); isNavigated = true; } } } public class Message_WebBKPI_Refresh : ValueChangedMessage { public Message_WebBKPI_Refresh(object value) : base(value) { } } }