WPFのMVVMで電卓づくり(11)
数字ボタンと浮動小数点ボタンのクリックをキャンセルするボタン「→」を実装します
構想
MainViewにてエラー時無効となるキャンセルボタン「→」を実装します
MainModelにてキャンセルボタンに対応した内部データの更新処理を実装します
実装
構想に沿って各MVVMクラスに追記していきます
MainView
キャンセルボタン「→」を実装します
<!--キャンセル(戻る)ボタン--> <Button Grid.Row="2" Grid.Column="0" Content="→" CommandParameter="Undo"/>
尚、前回までの実装で既にボタンのStyleにて
IsEnabledにエラー時falseとなるプロパティを紐づけしてあります
MainModel
キャンセルボタンクリックでMainViewModel.PushCommand経由で
呼び出されるMainModel.SetOperation()にて
switch-case文にキャンセルボタン用の処理を追記します
case OperationKind.Undo: Undo(); SetOperationText(ope); break;
数字ボタンと浮動小数点ボタンのクリックをキャンセルする処理Undo()を作成します
public void Undo() { if (this.IsAdditional) { this.AffectText = this.AffectText.Substring(0, this.AffectText.Length - 1); if (string.IsNullOrEmpty(this.AffectText) || this.AffectText.Equals("-")) { this.AffectText = "0"; } this.DisplayText = this.AffectText; } else { this.OriginalText = this.OriginalText.Substring(0, this.OriginalText.Length - 1); if (string.IsNullOrEmpty(this.OriginalText) || this.OriginalText.Equals("-")) { this.OriginalText = "0"; } this.DisplayText = this.OriginalText; } }
動作確認
起動後「-」「・」「5」「=」とクリックした際の画面表示
続いて「→」とクリックした際の画面表示
続いて「→」とクリックした際の画面表示
※参考にした電卓「HS-1220TSG」とは若干挙動が異なってます