alielie
2026-03-02 12e606635c42ea20f4b7c2bdda5204237a4b4c96
WPFProject/PanuonWindow.xaml.cs
@@ -4,6 +4,7 @@
using HMI.Core.Setting;
using HMI.Core.Util;
using HMI.UI.Util;
using HMI.Util.Alarm;
using Panuon.WPF.UI;
using System;
using System.Collections.ObjectModel;
@@ -13,13 +14,12 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using HMI.Util.Base;
using System.Windows.Interop;
namespace WPFProject
{
    public class SimpleAlarm
    {
        public string Id { get; set; }
        public string Time { get; set; }
        public string Message { get; set; }
        public override string ToString()
@@ -31,7 +31,7 @@
    /// <summary>
    /// PanuonWindow.xaml 的交互逻辑
    /// </summary>
    public partial class PanuonWindow : WindowX, IPluginContainer,IAlarmShow, AlarmBase
    public partial class PanuonWindow : WindowX, IPluginContainer, IAlarmShow
    {
        public PanuonWindow()
        {
@@ -73,8 +73,9 @@
            get => Alarms?.Count ?? 0;
        }
        public ListBox sb {
            get;set;
        public ListBox sb
        {
            get; set;
        }
        private void PanuonWindow_Loaded(object sender, RoutedEventArgs e)
@@ -85,7 +86,7 @@
            AlarmShowHelper.Register(this);
            var sb = WindowXCaption.GetHeaderTemplate(this);
            //sb.FindName("list",this.Con);
            WelcomeTitle = this.lang("App.Welcome", UserInfo.User.Name);
            ShowMenu = false;
            Application.Current.MainWindow = this;
@@ -171,6 +172,8 @@
            }
        }
        private bool logoutAdded = false;
        private void Logout()
        {
            if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureLogout")) == MessageBoxResult.OK)
@@ -181,11 +184,25 @@
                    File.Delete(path);
                }
                this.Closed -= window_Closed;
                if (!logoutAdded)
                {
                    this.Closed += Logout_PanuonWindow_Closed;
                    logoutAdded = true;
                }
                this.Close();
                PluginLoader.Reset();
                Login login = new Login();
                login.Show();
            }
        }
        private void Logout_PanuonWindow_Closed(object sender, EventArgs e)
        {
            AlarmUtil.Release();
            PluginLoader.Reset();
            UserInfo.Logout();
            AlarmShowHelper.UnRegister(this);
            Login login = new Login();
            login.Show();
            this.Closed -= Logout_PanuonWindow_Closed;
            logoutAdded = false;
        }
        private void RestartApp()
@@ -204,6 +221,17 @@
        private void window_Closed(object sender, EventArgs e)
        {
            try
            {
                AlarmUtil.Release();
                PluginLoader.Reset();
                UserInfo.Logout();
                AlarmShowHelper.UnRegister(this);
            }
            catch (Exception ex)
            {
            }
            Application.Current.Shutdown();
        }
@@ -219,6 +247,7 @@
                    this.Maximize();
                    break;
                case "closeBtn":
                    this.Closed -= Logout_PanuonWindow_Closed;
                    this.Close();
                    break;
                case "BtnSwitchTheme":
@@ -235,17 +264,18 @@
            }
        }
        public bool ShowAlarm(string message)
        public bool ShowAlarm(AlarmText alarm)
        {
            bool res = false;
            Dispatcher.Invoke(() =>
            {
                if (Alarms.FirstOrDefault(e => e.Message == message) == null)
                if (Alarms.FirstOrDefault(e => e.Id == alarm.VirtualId) == null)
                {
                    var data = new SimpleAlarm
                    {
                        Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                        Message = message
                        Id = alarm.VirtualId,
                        Time = alarm.Time,
                        Message = alarm.AlarmInfo
                    };
                    Alarms.Add(data);
                    sb?.ScrollIntoView(data);
@@ -261,9 +291,9 @@
            sb.Loaded -= list_Loaded;
        }
        public bool? Alarm(string message)
        private void Clear_AllAlarm_Click(object sender, RoutedEventArgs e)
        {
            return true;
            Alarms?.Clear();
        }
        //private void BaseWindow_Loaded(object sender, RoutedEventArgs e)