Я использую MVVM, и у меня возникли некоторые проблемы. Я пытаюсь обновить линию аннотации Oxyplot с помощью ползунка, когда ползунок перемещается, я хочу также переместить линию аннотации в это конкретное место графика (ось X).
Вот моя код:
Построение файла Xaml:
Я использую MVVM, и у меня возникли некоторые проблемы. Я пытаюсь обновить линию аннотации Oxyplot с помощью ползунка, когда ползунок перемещается, я хочу также переместить линию аннотации в это конкретное место графика (ось X). Вот моя код: Построение файла Xaml: [code]
[/code] Файл модели представления графика: [code]namespace MyApp.ViewModel.Components { public class PlotViewModel : ObservableObject,IDisposable { // Inside your PlotViewModel class private UdpClient _udpClient; private NetworkStream _networkStream;
// Create and add LineAnnotation directly SpectralPlotModel.Annotations.Add(new LineAnnotation { Color = OxyColors.Red, LineStyle = LineStyle.Solid, StrokeThickness = 5, Type = LineAnnotationType.Vertical, X = 1546, Text = "Pick a Spectrum", MinimumX = 1546, MaximumX = 1558, MinimumY = 0, MaximumY = 5 });
}
public void UpdateRedLine(double WavelengthSliderValue) { var redLineAnnotation = SpectralPlotModel.Annotations.FirstOrDefault(a => a is LineAnnotation) as LineAnnotation;
if (redLineAnnotation != null) { redLineAnnotation.X = WavelengthSliderValue; SpectralPlotModel.InvalidatePlot(true);
} } [/code] Файл XAML AE: [code]
[/code] AE ViewModel: [code]namespace MyApp.ViewModel.Screens { public class AEViewModel : ObservableObject { private PlotViewModel _plotViewModel; private double _wavelengthSliderValue;
public AEViewModel() { _plotViewModel = new PlotViewModel(); }
public double WavelengthSliderValue { get => _wavelengthSliderValue; set { if (_wavelengthSliderValue != value) { _wavelengthSliderValue = value; OnPropertyChanged(); _plotViewModel.WavelengthSliderValue = value; _plotViewModel.UpdateRedLine(_wavelengthSliderValue); } } }
} } [/code] Значение waveSliderValue отображается правильно, поэтому у меня нет проблем с используемым значением. Что-то не так с re - триггер рендеринга.