推送
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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); // 强制结束
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user