diff --git a/CalculatorMVVM/ViewModels/MainWindowViewModel.cs b/CalculatorMVVM/ViewModels/MainWindowViewModel.cs index b04eccc..e00e975 100644 --- a/CalculatorMVVM/ViewModels/MainWindowViewModel.cs +++ b/CalculatorMVVM/ViewModels/MainWindowViewModel.cs @@ -10,9 +10,13 @@ public class MainWindowViewModel : BindableBase public string Num1 { get => _Num1; - set { + set + { SetProperty(ref _Num1, value); AddCommand.RaiseCanExecuteChanged(); + SubCommand.RaiseCanExecuteChanged(); + MultiCommand.RaiseCanExecuteChanged(); + DivideCommand.RaiseCanExecuteChanged(); } } @@ -25,6 +29,9 @@ public string Num2 { SetProperty(ref _Num2, value); AddCommand.RaiseCanExecuteChanged(); + SubCommand.RaiseCanExecuteChanged(); + MultiCommand.RaiseCanExecuteChanged(); + DivideCommand.RaiseCanExecuteChanged(); } } @@ -33,7 +40,7 @@ public string Result { get => _Result; set => SetProperty(ref _Result, value); - + } public DelegateCommand AddCommand { get; } @@ -44,6 +51,12 @@ public string Result public MainWindowViewModel() { AddCommand = new DelegateCommand(Add, CanCalculate); + + SubCommand = new DelegateCommand(Sub, CanCalculate); + + MultiCommand = new DelegateCommand(Multi, CanCalculate); + + DivideCommand = new DelegateCommand(Divide, CanDivide); } private void Add() @@ -53,14 +66,17 @@ private void Add() private void Sub() { + Result = (_dblNum1 - _dblNum2).ToString(); } private void Multi() { + Result = (_dblNum1 * _dblNum2).ToString(); } private void Divide() { + Result = (_dblNum1 / _dblNum2).ToString(); } public bool CanCalculate() @@ -77,7 +93,20 @@ public bool CanCalculate() public bool CanDivide() { - return default; + var problem = !double.TryParse(Num1, out _dblNum1) || !double.TryParse(Num2, out _dblNum2); + + if (problem) + { + return false; + } + else if(_dblNum2 == 0) + { + return false; + } + else + { + return true; + } } } } diff --git a/CalculatorMVVM/Views/MainWindow.xaml b/CalculatorMVVM/Views/MainWindow.xaml index 866aecb..cd91d5b 100644 --- a/CalculatorMVVM/Views/MainWindow.xaml +++ b/CalculatorMVVM/Views/MainWindow.xaml @@ -20,9 +20,12 @@