我无法让 LiveCharts 图表以 0 以外的值开始

问题描述 投票:0回答:1

这就是我创建图表的方式:

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>
c# .net wpf user-interface livecharts
1个回答
0
投票

您是否尝试过在 XAML 中设置绑定?

类似这样的事情

<lvc:Axis Title="Frame" LabelFormatter="{Binding XAxisLabelFormatter}" MinValue="{Binding MinX}" MaxValue="{Binding MaxX}">
© www.soinside.com 2019 - 2024. All rights reserved.