using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using Microsoft.Extensions.DependencyInjection; using System.Windows; using System.Windows.Controls; namespace BBWYB.Client.Views.WebB { /// /// WebB.xaml 的交互逻辑 /// public partial class WebB : Page { private WebView2Manager w2m; private bool isNavigated; private GlobalContext globalContext; public WebB() { InitializeComponent(); this.Loaded += WebB_Loaded; this.Unloaded += WebB_Unloaded; WeakReferenceMessenger.Default.Register(this, (o, x) => { this.Dispatcher.Invoke(() => { _ = w2m.wb2.ExecuteScriptAsync("window.location.reload();"); }); }); WeakReferenceMessenger.Default.Register(this, (o, x) => { this.Dispatcher.Invoke(() => { _ = w2m.wb2.ExecuteScriptAsync("window.BBWY_B_WebContex('PACK_CONFIG_SUCCESS');"); }); }); } private void WebB_Unloaded(object sender, RoutedEventArgs e) { grid.Children.Remove(w2m.wb2); //w2m.wb2.Dispose(); w2m.Close(); WeakReferenceMessenger.Default.UnregisterAll(this); } private void WebB_Loaded(object sender, System.Windows.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://192.168.1.8:8080"; var registerName = "webTestContext"; //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); #else var url = "http://qtbbwy.qiyue666.com"; var registerName = "webContext"; #endif //var url = "http://qtbbwy.qiyue666.com"; 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_WebB_Refresh : ValueChangedMessage { public Message_WebB_Refresh(object value) : base(value) { } } public class Message_WebB_RefreshPack : ValueChangedMessage { public Message_WebB_RefreshPack(object value) : base(value) { } } }