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