Как правильно должен выглядеть Model в MVVM?

88
28 февраля 2022, 10:00

Возьмем простое View, в котором есть два TextBox и Button

 <StackPanel>
        <TextBox Text="{Binding TextBoxOne}"/>
        <TextBox Text="{Binding TextBoxTwo}"/>
        <Button Content="Рассчитать" Command="{Binding CalculateCommand}"/>
        <TextBlock Text="{Binding Result}"/>
 </StackPanel>

Задача: найти сумму чисел, введенных в TextBox.

 public class Model
    {
        public string TextBoxOne { get; set; }
        public string TextBoxTwo { get; set; }
        public string Result { get; set; }
    }
 private RelayCommand calculateCommand;
 Model model = new Model();
        public string TextBoxOne
        {
            get => model.TextBoxOne;
            set
            {
                model.TextBoxOne= value;
                OnPropertyChanged("TextBoxOne");
            }
        }
        public string TextBoxTwo
        {
            get => model.TextBoxTwo;
            set
            {
                model.TextBoxTwo= value;
                OnPropertyChanged("TextBoxTwo");
            }
        }
        public string Result
        {
            get => model.Result;
            set
            {
                model.Result= value;
                OnPropertyChanged("Result");
            }
        }
private string Calculating(string one, string two)
{
   string result = Convert.ToDouble(one) + Convert.ToDouble(two);
   return result;
}
  public RelayCommand CalculateCommand=> calculateCommand??  "Разрядность"
                    (calculateCommand= new RelayCommand((o) =>
                    {
                       Result = Calculating(TextBoxOne, TextBoxTwo);
                    }
                    }));

Вопрос в том, правильно ли я использую MVVM, нужно ли создавать интерфейс для модели, стоит ли переменным в ViewModel обращаться каждый раз к Model или лучше писать методы в Model? А также стоит ли каждый расчет (если их много на одной View будет) выносить по методам, чтобы потом писать к ним Unit тесты?

READ ALSO
Как сделать Many to Many?

Как сделать Many to Many?

Делаю как в примере Many to Many, но у меня появляется ошибка:

162
перебор файлов в папке c#

перебор файлов в папке c#

Перебираю файлы в папке

78
Где найти провайдер для sqlite (EF6)?

Где найти провайдер для sqlite (EF6)?

Я хочу воспользоваться подходом Database first, используя sqliteНо я никак не могу найти провайдер для него

162
Как сделать multi-select folders в WPF?

Как сделать multi-select folders в WPF?

Как по мне достаточно тривиальный вопрос, но почему то как то все очень сложно и нимМне нужно сделать такое: юзер кликает на кнопку - открывается...

158