using EC.UsingEventAggregator; using EC.Utils; using ECMonitor.Code.SysemNotifyIcon; using Prism.Events; using Prism.Regions; using System; using System.Collections.Generic; using System.ComponentModel; //using System.Drawing; using System.Windows; using System.Windows.Input; using System.Windows.Media; namespace ECMonitor { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { private IRegionManager _regionManager; private IEventAggregator _ea; public MainWindow(IRegionManager regionManager, IEventAggregator ea) { _regionManager = regionManager; _ea = ea; this.ResizeMode = ResizeMode.CanMinimize; InitializeComponent(); //var paletteHelper = new PaletteHelper(); //var theme = paletteHelper.GetTheme(); //theme.SetBaseTheme(Theme.Dark); //paletteHelper.SetTheme(theme); //系统托盘 SystemTrayParameter pars = new SystemTrayParameter("zgx.ico", "守护中", "", 0, notifyIcon_MouseDoubleClick); this.notifyIcon = WPFSystemTray.SetSystemTray(pars, GetList()); _ea.GetEvent().Subscribe(MessageReceived); FLogger.SubLog += SubShowMessage; FLogger.SubLog += SaveLog; } #region PageEvent /// /// 引发窗口关闭前响应,可阻止系统关闭 /// /// protected override void OnClosing(CancelEventArgs e) { if (!EXIT_APP) { e.Cancel = true; this.ShowInTaskbar = false; HideWindow(); } } /// /// 窗口关闭前响应,不可阻止系统关闭 /// /// protected override void OnClosed(EventArgs e) { base.OnClosed(e); //关闭系统托盘 notifyIcon.Dispose(); } #endregion PageEvent #region 系统托盘 private bool EXIT_APP = false; private System.Windows.Forms.NotifyIcon notifyIcon; //托盘右键菜单集合 private List GetList() { List ls = new List(); ls.Add(new SystemTrayMenu() { Txt = "打开主面板", Icon = "", Click = mainWin_Click }); ls.Add(new SystemTrayMenu() { Txt = "退出", Icon = "/img/exit.png", Click = Exit_Click }); return ls; } //双击事件 private void notifyIcon_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) { ShowWindow(); } #region 托盘右键菜单 //打开主面板 private void mainWin_Click(object sender, EventArgs e) { ShowWindow(); } //退出 private void Exit_Click(object sender, EventArgs e) { EXIT_APP = true; this.Close(); //System.Windows.Forms.Application.ExitThread(); Environment.Exit(0); // System.Windows.Application.Current.Shutdown(); } public void ShowWindow() { this.Dispatcher.Invoke(new Action(() => { if (this.WindowState == WindowState.Minimized) { this.WindowState = WindowState.Normal; } this.ShowInTaskbar = true; this.Show(); this.Activate(); })); } private void HideWindow() { //this.WindowState = WindowState.Minimized; this.Hide(); this.notifyIcon.ShowBalloonTip(3000, "", "程序在后台运行中,双击图标打开", System.Windows.Forms.ToolTipIcon.None); //弹出气泡提示 } #endregion 托盘右键菜单 #endregion 系统托盘 #region 系统按钮 private void btnClose_Click(object sender, RoutedEventArgs e) { this.Close(); // Exit_Click(sender, e); } private void SetFormSize() { double x1 = SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度 double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度 double xy = x1 + y1; x1 = x1 * 0.9; y1 = y1 * 0.9; this.Width = x1; this.Height = y1; } private void btnMax_Click(object sender, RoutedEventArgs e) { if (this.WindowState == WindowState.Maximized) { this.WindowState = WindowState.Normal; } else { this.WindowState = WindowState.Maximized; } } private void btnMin_Click(object sender, RoutedEventArgs e) { this.WindowState = WindowState.Minimized; } private void DockPanel_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { this.DragMove(); } } #endregion 系统按钮 #region top 按钮颜色 private SolidColorBrush barkgroudcolor = new SolidColorBrush(Color.FromRgb(0x4c, 0x8b, 0xb7)); private void btnVodieo_Click(object sender, RoutedEventArgs e) { btnVodieo.Background = barkgroudcolor; btnSet.Background = Brushes.Transparent; } private void btnSet_Click(object sender, RoutedEventArgs e) { btnVodieo.Background = Brushes.Transparent; btnSet.Background = barkgroudcolor; } #endregion top 按钮颜色 #region 统一底部 弹窗提示 public void MessageReceived(LogModel log) { MainSnackbar.MessageQueue?.Enqueue(log.message); } //public async Task MessageTips(string message) //{ // var sampleMessageDialog = new SampleMessageDialog // { // Message = { Text = message } // }; // return await DialogHost.Show(sampleMessageDialog, "RootDialog"); //} #endregion 统一底部 弹窗提示 #region 公共 基础函数 private int linenumber = 0; private void SubShowMessage(MyLogger log) { if (log.Level >= (LoggerLevel)0) { linenumber++; this.Dispatcher.Invoke(new Action(() => { if (linenumber > 500) { //richText.Document.Blocks.Clear(); } // richText.AppendText(log.Message + '\n'); })); } } private void SaveLog(MyLogger log) { switch (log.Level) { case LoggerLevel.Debug: LogFactory.GetLogger().Debug(log.Message); break; case LoggerLevel.Info: LogFactory.GetLogger().Info(log.Message); break; case LoggerLevel.Error: LogFactory.GetLogger().Error(log.Message); break; } } #endregion 公共 基础函数 } }