You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using OxyPlot.Series;
using OxyPlot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
namespace GettingStarted.ViewModels
{
internal partial class MainViewModel3 : ObservableObject
{
[ObservableProperty]
private PlotModel _myModel;
[ObservableProperty]
private LineSeries _lineSeries;
public MainViewModel3()
{
MyModel = new PlotModel() { Title = "Getting Started with RT Plot" };
LineSeries = new LineSeries() { Title = "Dynamic Data" };
MyModel.Series.Add(LineSeries);
_timer = new System.Timers.Timer();
_timer.Interval = 50;
_timer.Elapsed -= _timer_Elapsed;
_timer.Elapsed += _timer_Elapsed;
}
private int _lastX = 0;
private void _timer_Elapsed(object? sender, ElapsedEventArgs e)
{
Application.Current.Dispatcher.Invoke(() =>
{
LineSeries.Points.Add(new DataPoint(_lastX, Math.Sin(_lastX * 0.1)));
MyModel.InvalidatePlot(true);
_lastX++;
});
}
private bool _isTimerStarted = false;
private System.Timers.Timer _timer;
[RelayCommand]
private void FlipTimer()
{
if (!_isTimerStarted)
{
_timer.Start();
_isTimerStarted = true;
}
else
{
_timer.Stop();
_isTimerStarted = false;
}
}
}
}