Как правильно отделить поля и свойства в MVVM для расчетов

пытаюсь постигнуть MVVM. У меня есть поля и свойства(подключенные к XAML форме приложения)

В классе MainWindowViewModel:ViewModel

    private double _dL;
    public double dL
    {
        get => _dL;
        set => Set(ref _dL, value);
    }

Соотвественно в разметке XAML привязано поле dL.

Класс ViewModel реализуется так:

 internal abstract class ViewModel : INotifyPropertyChanged, IDisposable
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string PropertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
    }

    protected virtual bool Set<T>(ref T field, T value, [CallerMemberName] string PropertyName = null)
    {
        if (Equals(field, value)) return false;
        field = value;
        OnPropertyChanged(PropertyName);
        return true;
    }
    public void Dispose()
    {
        Dispose(true);
    }
    private bool _Disposed;
    protected virtual void Dispose(bool Disposing)
    {
        if (!Disposing || _Disposed) return;
        _Disposed = true;
    }
}

Я раньше думал, что поля мне служат для внутренней логики и расчетов, а свойства для отображения на форме. Например, мне внутри программы нужно провести точные расчеты в вывести на форме - округленные значения. я в классе MainWindowViewModel что то считаю с _dL

_dL = 3.14*255/360+0.1;

То есть получаю точные значения без округления, а затем для формы пишу

dL = Math.Round(_dL,3); // и на форме отобразиться округленное значение

Но проблема в том, что если мне в дальнейшем нужно будет опять использовать для расчетов _dL (точное значение) - оно уже исчезло, и у меня только округленное свойство есть.

Как быть? Кроме очевидного - там где мне надо снова - опять считать _dL ?


Ответы (0 шт):