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 @@
-
+
+
+
+