Невозможно получить значение после его установкиC#

Место общения программистов C#
Anonymous
Невозможно получить значение после его установки

Сообщение Anonymous »

Я пытаюсь получить значение из этой функции:
private void MyPlotModel_MouseDown(object sender, OxyMouseDownEventArgs ex)
{
OxyPlot.ElementCollection axisList = SpectralPlotModel.Axes;

Axis xAxis = axisList.FirstOrDefault(ax => ax.Position == AxisPosition.Bottom);
Axis yAxis = axisList.FirstOrDefault(ax => ax.Position == AxisPosition.Left);

NearestPoint = OxyPlot.Axes.Axis.InverseTransform(ex.Position, xAxis, yAxis);
Debug.Print("Nearest Point: " + NearestPoint);
}

Значение, которое я получаю, представляет собой случайное число из моего графика, оно работает нормально, после этого я установил его так:
public DataPoint NearestPoint
{
get
{
Debug.Print($"Entered Get {_nearestPoint}!!!");
return _nearestPoint;
}
set
{
Debug.Print($"Entered Set {value}!!!");
_nearestPoint = value;
OnPropertyChanged(nameof(NearestPoint));
}
}

Печать в наборе также работает, но печать, когда я вызываю, получает нулевой результат печати, есть идеи, что я делаю неправильно?
Я звоню эта переменная из этой функции:
public async void OnLockChanged(int scanWindow, int intesityThreshold)
{
Debug.Print($"Points: {NearestPoint}, scanWindowSeconds: {scanWindow},Threshold: {intesityThreshold}");
}

Спасибо.
======================== ===========================
Отредактировано:
файл xaml.cs, из которого он запускает onLockChange (эта функция находится внутри одного из моих компонентов класса MVVM):
public class xxxViewModel : ObservableObject
{
// Variables
private PlotViewModel _plotViewModel;

private bool _isLocked;
private int _scanWindow;
private int _intesityThreshold;

public xxxViewModel()
{
_plotViewModel = new PlotViewModel();
LockCommand = new RelayCommand(ExecuteLockCommand);
}

public int ScanWindow
{
get => _scanWindow;
set
{
if (_scanWindow != value)
{
_scanWindow = value;
OnPropertyChanged();
}
}
}
public int IntesityThreshold
{
get => _intesityThreshold;
set
{
if (_intesityThreshold != value)
{
_intesityThreshold = value;
OnPropertyChanged();
}
}
}

//ICommand
public ICommand LockCommand { get; }

private void ExecuteLockCommand(object parameter)
{
_plotViewModel.OnLockChanged(_scanWindow, _intesityThreshold);
}
}


Также, если это поможет, еще один пример -> mouseWavelengthClick не работает, так что, возможно, мне нужно установить конструктор или что-то в этом роде?
Я просто объявляю их в качестве переменных на данный момент эта переменная находится внутри одного класса и не используется и не берется из другого класса:
private ScreenPoint mouseDownPoint;
private int waveLengthIndex;
private bool mouseWavelengthClick = false;

private List GetWavelength(double[] yData)
{
var wavelength = new double[4096];
................
for (int i = 0; i < yData.Length; i++)
{
pointData.Add(new PointData { X = wavelength, Y = yData });
if (mouseWavelengthClick)
{
Debug.Print("Wavelength : " + i);
waveLengthIndex = i;
mouseWavelengthClick = false;
}

}

private void MyPlotModel_MouseDown(object sender, OxyMouseDownEventArgs ex)
{
mouseWavelengthClick = true;
OxyPlot.ElementCollection axisList = SpectralPlotModel.Axes;

Axis xAxis = axisList.FirstOrDefault(ax => ax.Position == AxisPosition.Bottom);
Axis yAxis = axisList.FirstOrDefault(ax => ax.Position == AxisPosition.Left);

NearestPoint = OxyPlot.Axes.Axis.InverseTransform(ex.Position, xAxis, yAxis);
//Debug.Print("Nearest Point: " + NearestPoint);
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... setting-it

Вернуться в «C#»