Files
Ayay/SHH.CameraDashboard/Controls/BottomDockControl.xaml.cs

64 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace SHH.CameraDashboard
{
public partial class BottomDockControl : UserControl
{
private bool _isExpanded = false;
public BottomDockControl()
{
InitializeComponent();
// 核心修正:这里必须使用 WebApiDiag因为它对应你 XAML 里的 x:Name
if (this.WebApiDiag != null)
{
// 订阅 DiagnosticControl 抛出的关闭事件
this.WebApiDiag.RequestCollapse += (s, e) =>
{
// 当子页面点击“关闭”按钮时,执行收回面板的方法
HideExpandedPanel();
};
}
}
// 逻辑:隐藏上方的大面板
private void HideExpandedPanel()
{
ExpandedPanel.Visibility = Visibility.Collapsed;
ArrowIcon.Text = "▲"; // 箭头恢复向上
}
// 接收全局日志,分发给内部控件,并更新状态栏摘要
public void PushLog(ApiLogEntry log)
{
// 1. 推送给内部的诊断控件 (详细列表)
WebApiDiag.PushLog(log);
// 2. 更新底部状态栏 (摘要)
string statusIcon = log.IsSuccess ? "✅" : "❌";
LatestLogText.Text = $"{statusIcon} [{log.Time:HH:mm:ss}] {log.Method} {log.Url} ({log.StatusCode})";
LatencyText.Text = $"{log.DurationMs}ms";
// 如果失败,可以将状态栏背景变红一下(可选)
if (!log.IsSuccess)
{
// 这里简单处理,如果想要复杂的动画可以使用 Storyboard
LatestLogText.Foreground = new SolidColorBrush(Colors.Yellow);
}
else
{
LatestLogText.Foreground = Brushes.White;
}
}
private void TogglePanel_Click(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
_isExpanded = !_isExpanded;
ExpandedPanel.Visibility = _isExpanded ? Visibility.Visible : Visibility.Collapsed;
ArrowIcon.Text = _isExpanded ? "▼" : "▲";
}
}
}