From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 HMI.UI/Util/ToastHelper.cs |  256 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 256 insertions(+), 0 deletions(-)

diff --git a/HMI.UI/Util/ToastHelper.cs b/HMI.UI/Util/ToastHelper.cs
new file mode 100644
index 0000000..b578a76
--- /dev/null
+++ b/HMI.UI/Util/ToastHelper.cs
@@ -0,0 +1,256 @@
+锘縰sing HMI.Core.Util;
+using Panuon.WPF.UI;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace HMI.UI.Util
+{
+    public interface ToastHandler
+    {
+        void Success(Window window,
+                string message,
+                MessageBoxIcon icon,
+                ToastPosition position, double offset, int durationMs,
+                ToastWindow targetWindow);
+
+        void Warning(Window window,
+                string message,
+                MessageBoxIcon icon,
+                ToastPosition position, double offset, int durationMs,
+                ToastWindow targetWindow);
+
+        void Error(Window window,
+                string message,
+                MessageBoxIcon icon,
+                ToastPosition position, double offset, int durationMs,
+                ToastWindow targetWindow);
+
+        void Info(Window window,
+                string message,
+                MessageBoxIcon icon,
+                ToastPosition position, double offset, int durationMs,
+                ToastWindow targetWindow);
+    }
+
+    public class ToastHelper
+    {
+        private static ToastHandler Instance;
+
+        public static void Register(ToastHandler helper)
+        {
+            if (Instance == null) { Instance = helper; }
+        }
+
+        public static void Success(string message,
+            MessageBoxIcon icon = MessageBoxIcon.Success,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
+            {
+                var window = Application.Current.MainWindow;
+                if (window is WindowX)
+                {
+                    Instance.Success(window, message, icon, position, offset, durationMs, targetWindow);
+                }
+                else
+                {
+                    MessageBox.Show(message, LangUtil.Get("App.Success"));
+                }
+            }));
+        }
+
+        public static void Warning(string message,
+            MessageBoxIcon icon = MessageBoxIcon.Warning,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
+            {
+                var window = Application.Current.MainWindow;
+                if (window is WindowX)
+                {
+                    Instance.Warning(window, message, icon, position, offset, durationMs, targetWindow);
+                }
+                else
+                {
+                    MessageBox.Show(message, LangUtil.Get("App.Warn"));
+                }
+            }));
+        }
+
+        public static void Error(string message,
+            MessageBoxIcon icon = MessageBoxIcon.Error,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
+            {
+                var window = Application.Current.MainWindow;
+                if (window is WindowX)
+                {
+
+                    Instance.Error(window, message, icon, position, offset, durationMs, targetWindow);
+                }
+                else
+                {
+                    MessageBox.Show(message, LangUtil.Get("App.Error"));
+                }
+            }));
+        }
+
+        public static void Info(string message,
+            MessageBoxIcon icon = MessageBoxIcon.Info,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
+            {
+                var window = Application.Current.MainWindow;
+                if (window is WindowX)
+                {
+
+                    Instance.Info(window, message, icon, position, offset, durationMs, targetWindow);
+                }
+                else
+                {
+                    MessageBox.Show(message, LangUtil.Get("App.Info"));
+                }
+            }));
+        }
+
+
+        public static void Success(DependencyObject dp,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Success,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            if (!(dp is Window window))
+            {
+                window = Window.GetWindow(dp);
+            }
+            Instance.Success(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Warning(DependencyObject dp,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Warning,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            if (!(dp is Window window))
+            {
+                window = Window.GetWindow(dp);
+            }
+            Instance.Warning(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Error(DependencyObject dp,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Error,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            if (!(dp is Window window))
+            {
+                window = Window.GetWindow(dp);
+            }
+            Instance.Error(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Info(DependencyObject dp,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Info,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            if (!(dp is Window window))
+            {
+                window = Window.GetWindow(dp);
+            }
+            Instance.Info(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+    }
+
+    public static class ToastUtil
+    {
+
+        public static void Success(this Window window,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Success,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Success(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Warning(this Window window,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Warning,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Warning(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Error(this Window window,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Error,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Error(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Info(this Window window,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Info,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Info(window, message, icon, position, offset, durationMs, targetWindow);
+        }
+
+
+        public static void Success(this UserControl control,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Success,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Success(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Warning(this UserControl control,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Warning,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Warning(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow);
+        }
+
+        public static void Error(this UserControl control,
+            string message,
+            MessageBoxIcon icon = MessageBoxIcon.Error,
+            ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+            ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            Application.Current.Dispatcher.Invoke(() =>
+            {
+                ToastHelper.Error(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow);
+            });
+        }
+
+        public static void Info(this UserControl control,
+           string message,
+           MessageBoxIcon icon = MessageBoxIcon.Error,
+           ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000,
+           ToastWindow targetWindow = ToastWindow.ActiveWindow)
+        {
+            ToastHelper.Info(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow);
+        }
+    }
+}

--
Gitblit v1.9.1