From e57938fbda9bff702004038f76d009422968bff5 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 06 十一月 2026 18:05:07 +0800
Subject: [PATCH] 提交代码

---
 DeviceService/LogWindow.xaml.cs |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/DeviceService/LogWindow.xaml.cs b/DeviceService/LogWindow.xaml.cs
new file mode 100644
index 0000000..1e3d5d9
--- /dev/null
+++ b/DeviceService/LogWindow.xaml.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Windows;
+using DeviceService.Logging;
+
+namespace DeviceService;
+
+/// <summary>
+/// 鏃ュ織绐楀彛锛氬睍绀� MemoryAppender 鍐呭瓨缂撳啿涓殑鏈�杩� 1000 鏉℃棩蹇楋紝骞跺疄鏃惰拷鍔犳柊鏃ュ織銆�
+/// </summary>
+public partial class LogWindow : Window
+{
+    private readonly ObservableCollection<LogEntry> _entries = new ObservableCollection<LogEntry>();
+
+    public LogWindow()
+    {
+        InitializeComponent();
+        LogList.ItemsSource = _entries;
+        Loaded += LogWindow_Loaded;
+        Closed += LogWindow_Closed;
+    }
+
+    private void LogWindow_Loaded(object sender, RoutedEventArgs e)
+    {
+        foreach (LogEntry entry in MemoryAppender.Current.Snapshot)
+        {
+            _entries.Add(entry);
+        }
+
+        UpdateCount();
+        MemoryAppender.Current.EntryAppended += OnEntryAppended;
+        ScrollToEnd();
+    }
+
+    private void OnEntryAppended(LogEntry entry)
+    {
+        // 鏃ュ織浜嬩欢鍙兘鏉ヨ嚜鍚庡彴绾跨▼锛屽垏鍥� UI 绾跨▼鏇存柊鍒楄〃
+        Dispatcher.BeginInvoke(new Action(() =>
+        {
+            _entries.Add(entry);
+            while (_entries.Count > MemoryAppender.Current.Capacity)
+            {
+                _entries.RemoveAt(0);
+            }
+
+            UpdateCount();
+            ScrollToEnd();
+        }));
+    }
+
+    private void ClearButton_Click(object sender, RoutedEventArgs e)
+    {
+        MemoryAppender.Current.Clear();
+        _entries.Clear();
+        UpdateCount();
+    }
+
+    private void UpdateCount()
+    {
+        CountText.Text = $"鍏� {_entries.Count} 鏉★紙鏈�澶氫繚鐣� {MemoryAppender.Current.Capacity} 鏉★級";
+    }
+
+    private void ScrollToEnd()
+    {
+        if (AutoScrollBox.IsChecked == true && _entries.Count > 0)
+        {
+            LogList.ScrollIntoView(_entries.Last());
+        }
+    }
+
+    private void LogWindow_Closed(object? sender, EventArgs e)
+    {
+        MemoryAppender.Current.EntryAppended -= OnEntryAppended;
+    }
+}

--
Gitblit v1.9.1