优化调试面板

This commit is contained in:
zhengxuan.zhang
2026-06-01 14:35:37 +08:00
parent 4301f8a5f7
commit 5a11af9ab1
3 changed files with 14 additions and 65 deletions
@@ -25,7 +25,6 @@ namespace XplorePlane.ViewModels.Debug
private bool _disposed;
public ObservableCollection<PerformanceMetric> Metrics { get; } = new();
public ObservableCollection<TrendDataPoint> TrendData { get; } = new();
public double MaxLatency
{
@@ -63,7 +62,6 @@ namespace XplorePlane.ViewModels.Debug
_timer.Tick += (_, _) =>
{
UpdateFrequencyMetrics();
UpdateTrendData();
};
}
@@ -95,7 +93,6 @@ namespace XplorePlane.ViewModels.Debug
_timer.Stop();
Metrics.Clear();
TrendData.Clear();
_disposed = true;
}
@@ -150,19 +147,5 @@ namespace XplorePlane.ViewModels.Debug
MaxLatency = Metrics.Count == 0 ? 0 : Metrics.Max(m => m.AverageLatency);
IsLatencyWarning = MaxLatency > 500;
}
private void UpdateTrendData()
{
TrendData.Add(new TrendDataPoint
{
Timestamp = DateTime.Now,
Value = Metrics.Sum(m => m.EventsPerSecond)
});
while (TrendData.Count > 60)
{
TrendData.RemoveAt(0);
}
}
}
}
@@ -21,11 +21,7 @@
<!-- 顶部工具栏 -->
<Border Grid.Row="0" Background="#F5F5F5" BorderBrush="#E0E0E0" BorderThickness="0,0,0,1">
<StackPanel Orientation="Horizontal" Margin="4">
<Button Content="💾 保存布局" Command="{Binding SaveLayoutCommand}" Padding="8,4" Margin="2,0" />
<Button Content="🔄 重置布局" Command="{Binding ResetLayoutCommand}" Padding="8,4" Margin="2,0" />
<Button Content="📤 导出全部" Command="{Binding ExportAllCommand}" Padding="8,4" Margin="2,0" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4"/>
</Border>
<!-- 主内容区:使用 Grid 布局精确控制各面板的位置和大小 -->
@@ -21,51 +21,21 @@
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="2*" />
<RowDefinition Height="3*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding MaxLatency, StringFormat=最大延迟: {0:F2} ms}" FontWeight="SemiBold" Margin="0,0,0,8" />
<TextBlock Text="{Binding MaxLatency, StringFormat=最大延迟: {0:F2} ms}" FontWeight="SemiBold" />
<telerik:RadGridView Grid.Row="1"
Margin="0,8,0,0"
ItemsSource="{Binding Metrics}"
AutoGenerateColumns="False"
IsReadOnly="True">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="状态类型" DataMemberBinding="{Binding StateTypeDisplay}" Width="*" />
<telerik:GridViewDataColumn Header="频率(Hz)" DataMemberBinding="{Binding EventsPerSecond}" Width="120" />
<telerik:GridViewDataColumn Header="延迟(ms)" DataMemberBinding="{Binding AverageLatency}" Width="140" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
<telerik:RadChart Grid.Row="1" Margin="0,8,0,0" ItemsSource="{Binding TrendData}">
<telerik:RadChart.DefaultView>
<telerik:ChartDefaultView>
<telerik:ChartDefaultView.ChartArea>
<telerik:ChartArea />
</telerik:ChartDefaultView.ChartArea>
<telerik:ChartDefaultView.ChartLegend>
<telerik:ChartLegend />
</telerik:ChartDefaultView.ChartLegend>
</telerik:ChartDefaultView>
</telerik:RadChart.DefaultView>
<telerik:RadChart.SeriesMappings>
<telerik:SeriesMapping CollectionIndex="0">
<telerik:SeriesMapping.SeriesDefinition>
<telerik:LineSeriesDefinition />
</telerik:SeriesMapping.SeriesDefinition>
<telerik:ItemMapping DataPointMember="XValue" FieldName="Timestamp" />
<telerik:ItemMapping DataPointMember="YValue" FieldName="Value" />
</telerik:SeriesMapping>
</telerik:RadChart.SeriesMappings>
</telerik:RadChart>
<telerik:RadGridView Grid.Row="1"
ItemsSource="{Binding Metrics}"
AutoGenerateColumns="False"
IsReadOnly="True">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="状态类型" DataMemberBinding="{Binding StateTypeDisplay}" Width="*" />
<telerik:GridViewDataColumn Header="频率(Hz)" DataMemberBinding="{Binding EventsPerSecond}" Width="120" />
<telerik:GridViewDataColumn Header="延迟(ms)" DataMemberBinding="{Binding AverageLatency}" Width="140" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</UserControl>