优化调试面板
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user