This commit is contained in:
2026-03-05 10:20:43 +08:00
parent 88483b38ad
commit f3413b42ee
8 changed files with 270 additions and 164 deletions

View File

@@ -74,6 +74,10 @@ namespace FATrace.WPLApp
// 应用主题样式
Syncfusion.SfSkinManager.SfSkinManager.ApplyStylesOnApplication = true;
//从容器中获取MainView的实例对象
var container = ContainerLocator.Container;
var shell = container.Resolve<object>("MainView");
// 先显示 Shell避免耗时初始化阻塞界面呈现
base.OnInitialized();
@@ -81,7 +85,7 @@ namespace FATrace.WPLApp
LogService = Container.Resolve<ILogService>();
LogService.Info("OnInitialized-UI Ready");
if (Current.MainWindow is Window view)
if (shell is Window view)
{
var regionManager = Container.Resolve<IRegionManager>();
RegionManager.SetRegionManager(view, regionManager);
@@ -98,9 +102,9 @@ namespace FATrace.WPLApp
LogService?.Error("Current.MainWindow 为 null执行回退创建 MainView");
try
{
var fallback = new MainView();
Current.MainWindow = fallback;
fallback.Show();
//var fallback = new MainView();
//Current.MainWindow = fallback;
//fallback.Show();
}
catch (Exception ex)
{
@@ -161,26 +165,8 @@ namespace FATrace.WPLApp
regionAdapterMappings.RegisterMapping(typeof(SfNavigationDrawer), Container.Resolve<SfNavigationDrawerRegionAdapter>());
}
protected override Window CreateShell()
{
try
{
return Container.Resolve<MainView>();
}
catch (Exception ex)
{
// 记录并回退到直接创建,避免因容器解析失败导致无界面
Debug.WriteLine($"CreateShell 容器解析 MainView 失败: {ex}");
try
{
return new MainView();
}
catch
{
throw; // 让全局异常处理捕获
}
}
}
protected override Window CreateShell() => null;
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{

View File

@@ -16,7 +16,7 @@
WindowStartupLocation="CenterScreen"
WindowState="Maximized"
WindowStyle="None"
mc:Ignorable="d">
mc:Ignorable="d" Closing="ChromelessWindow_Closing" Closed="ChromelessWindow_Closed">
<syncfusion:ChromelessWindow.Resources>
<!-- NavigationItem的容器样式 {Binding IsParent} -->
<Style x:Key="NavItemStyle" TargetType="syncfusion:NavigationItem">

View File

@@ -1,3 +1,4 @@
using FATrace.WPLApp.Services;
using Syncfusion.Windows.Shared;
using System.Text;
using System.Windows;
@@ -17,9 +18,43 @@ namespace FATrace.WPLApp.Views
/// </summary>
public partial class MainView : ChromelessWindow
{
public MainView()
public MainView(ILogService logService)
{
InitializeComponent();
LogService = logService;
}
public ILogService LogService { get; }
/// <summary>
/// 主界面正要关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChromelessWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// 弹窗提示是否确定要退出
MessageBoxResult result = MessageBox.Show("您确定要退出程序吗?退出后【产线上扫码-喷码-读码】功能将无法使用】!请确认后再操作。", "提示", MessageBoxButton.OKCancel, MessageBoxImage.None, MessageBoxResult.Cancel);
//System.Console.WriteLine(result);
if (result == MessageBoxResult.Cancel)
{
e.Cancel = true; // 中断点击事件
}
else
{
LogService.Info("Windows关闭");
}
}
/// <summary>
/// 主界面完成关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChromelessWindow_Closed(object sender, EventArgs e)
{
Environment.Exit(0); // 强制结束
}
}
}