Изменение метода расчета введенных значений в textbox с выводом результата в другой textbox

Имеется ObservableCollection с двумя позициями, 2 textbox для ввода данных и еще 1 textbox для вывода результата расчета. Пользователь должен выбрать позицию из ObservableCollection, ввести два значения, после чего программа должна автоматически выдать результат сложения или вычитания в textbox. Попробовал ввести условие в свойство, которое должно выводить результат, но это не работает.

Вот код Model:

public class Formula : INotifyPropertyChanged
    {
        private string title;       
        private double coefficientA;
        private double coefficientB;
        private double result;

public string Title
        {
            get { return title; }
            set
            {
                title = value;
                OnPropertyChanged("Title");
            }
        }
 public double CoefficientA
        {
            get { return coefficientA; }
            set
            {
                coefficientA = value;
                OnPropertyChanged("CoefficientA");
            }
        }
public double CoefficientB
        {
            get { return coefficientB; }
            set
            {
                coefficientB = value;
                OnPropertyChanged("CoefficientB");
            }
        }
public double Result
        {
            get { return result; }
            set
            {
                 if (Title == "Суммирование")
                {
                    result = coefficientA + coefficientB;
                }
                else
                {
                    result = coefficientA - coefficientB;
                }
                OnPropertyChanged("Result");
            }
        }

 public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string prop = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
        }
    }

Вот код ViewModel

public class ViewModelFormula : INotifyPropertyChanged
    {
        private Formula selectedFormula;         
        public ObservableCollection<Formula> Formulas { get; set; }
        public List<Formula> DatagridFormulas { get; set; }

        public Formula SelectedFormula
        {
            get { return selectedFormula; }
            set
            {
                selectedFormula = value;
                OnPropertyChanged("SelectedFormula");
            }
        }

        public ViewModelFormula()
        {
            Formulas = new ObservableCollection<Formula>
            {
                new Formula {Title="Суммирование"},
                new Formula {Title="Вычитание"},              
            };  
        }     
        
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string prop = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
        }

и Представление:

 <ListBox Grid.Row="0" Grid.Column="0" x:Name="ListBox1" ItemsSource="{Binding Formulas}"
                 SelectedItem="{Binding SelectedFormula}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="5">
                        <TextBlock FontSize="18" Text="{Binding Path = Title}" />
                        <TextBlock Text="{Binding Path= FormulaOfFunction}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

        <StackPanel Grid.Column="1" DataContext="{Binding SelectedFormula}" Grid.ColumnSpan="2">
            <TextBlock Text="Название" />
            <TextBox x:Name ="TextBoxFormulaName" Text ="{Binding Title, Mode=OneWay}" />           
            <TextBlock Text="Коэффициент a" />
            <TextBox x:Name ="CoefficientATextBox"  Text="{Binding CoefficientA , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Text="Коэффициент b" />
            <TextBox x:Name="CoefficientBTextBox"  Text="{Binding CoefficientB, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Text="Результат" />
            <ComboBox x:Name ="ResultTextBox" ItemsSource="{Binding Result}" />           
        </StackPanel>

Я знаю, как это сделать через обработчики событий, но в данном случае необходимо обойтись без них в паттерне MVVM. Я новичок в программировании, поэтому буду рад любым советам


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