这就是我创建图表的方式:
private SeriesCollection _graphData;
public SeriesCollection GraphData
{
get => _graphData;
set
{
_graphData = value;
OnPropertyChanged();
}
}
// some other codes as you can imagine
public void UpdateGraphData()
{
if (Storage.media != null && Storage.media.StreamList.Count > 0 && Storage.media.StreamList[0].FrameList.Count > 0)
{
GraphData.Clear();
if (IsRedSelected)
{
GraphData.Add(new LineSeries
{
Values = new ChartValues<double>(RedValues),
Title = "Red Graph",
Stroke = System.Windows.Media.Brushes.Red
});
}
else if (IsGreenSelected)
{
GraphData.Add(new LineSeries
{
Values = new ChartValues<double>(GreenValues),
Title = "Green Graph",
Stroke = System.Windows.Media.Brushes.Green
});
}
else if (IsBlueSelected)
{
GraphData.Add(new LineSeries
{
Values = new ChartValues<double>(BlueValues),
Title = "Blue Graph",
Stroke = System.Windows.Media.Brushes.Blue
});
}
isGraphCreated = true;
ShowFrame();
}
}
而且效果很好。它显示了右侧的列表:
但是正如你所看到的,x 轴从 0 开始。我想让它从另一个变量开始。假设我有一个包含 10 个点的图表,并且有一个 minX 值,我希望相同的图表从 minX 开始并继续到 minX+10 值。
如果您需要,这是 xaml 代码:
<lvc:CartesianChart Grid.Column="1" Grid.Row="0" Grid.RowSpan="2"
Series="{Binding GraphData}"
DisableAnimations="True"
Zoom="X"
Pan="X"
DataClick="CartesianChart_OnDataClick">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Frame" LabelFormatter="{Binding XAxisLabelFormatter}">
<lvc:Axis.Sections>
<lvc:AxisSection Value="{Binding CurrentFramePosition}" StrokeThickness="2" Stroke="Yellow"/>
</lvc:Axis.Sections>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="RMS Contrast" LabelFormatter="{Binding YAxisLabelFormatter}" />
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
您是否尝试过在 XAML 中设置绑定?
类似这样的事情
<lvc:Axis Title="Frame" LabelFormatter="{Binding XAxisLabelFormatter}" MinValue="{Binding MinX}" MaxValue="{Binding MaxX}">