びおりんのブログ

きままにアプリのできるまでを公開していきます

WPFのMVVMで電卓づくり(12)

出力画面の符号を反転させるボタン「±」を実装します

構想

MainViewにてエラー時無効となる符号反転ボタン「±」を実装します
MainModelにて符号反転ボタンに対応した内部データの更新処理を実装します

実装

構想に沿って各MVVMクラスに追記していきます

MainView

符号反転ボタン「±」を実装します

     <!--符号反転ボタン-->
        <Button Grid.Row="3" Grid.Column="0" Content="±" CommandParameter="Reverse"/>

尚、前回までの実装で既にボタンのStyleにて
IsEnabledにエラー時falseとなるプロパティを紐づけしてあります

MainModel

符号反転ボタンクリックでMainViewModel.PushCommand経由で
呼び出されるMainModel.SetOperation()にて
switch-case文に符号反転ボタン用の処理を追記します

                   case OperationKind.Reverse:
                        Reverse();
                        break;

出力画面の符号を反転させる処理Reverse()を作成します

       public void Reverse()
        {
            if (this.IsAdditional)
            {
                if (this.AffectText.Contains("-"))
                {
                    this.AffectText = this.AffectText.Substring(1);
                }
                else
                {
                    if (!this.AffectText.Equals("0"))
                    {
                        this.AffectText = "-" + this.AffectText;
                    }
                }
                this.DisplayText = this.AffectText;
            }
            else
            {
                if (this.OriginalText.Contains("-"))
                {
                    this.OriginalText = this.OriginalText.Substring(1);
                }
                else
                {
                    if (!this.OriginalText.Equals("0")) 
                    {
                        this.OriginalText = "-" + this.OriginalText;
                    }
                }
                this.DisplayText = this.OriginalText;
            }
        }

出力画面が0のときは符号を反転させないようにしています

動作確認

起動後「±」とクリックした際の画面表示
f:id:kazoojapan1985:20200506174740p:plain 起動後「・」「±」「1」とクリックした際の画面表示
f:id:kazoojapan1985:20200506174808p:plain