Изменение метода расчета введенных значений в 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. Я новичок в программировании, поэтому буду рад любым советам