準備サンプルアプリケーションの概要データをSPREADに表示する(1)モデルを作成Page2データをSPREADに表示する(2)ビューモデルを作成ビューを作成Page3コマンドを作成するビューモデルにプロパティを追加コマンドを実装ビューのコントロールにバインディングPage4コマンドでSPREADを操作するコマンドを変更するコマンドのコンストラクタ引数を使用するまとめコマンドでSPREADを操作するSPREADの行、列、セルを生成するRow、Column、Cellクラスのメンバは、依存関係プロパティを持っていません。そのため、これらのクラスのメンバをバインディングターゲットとすることができず、ビューモデルからセルや列に対して直接バインディングができません。ボタン型セルに設定したコマンドが実行されると、Executeメソッドのパラメータからは、セルの情報を保存したCellCommandParameterオブジェクトを取得できます。コマンドクラスにSPREADオブジェクトを示すプロパティを追加することで、コマンドによりSPREADを操作できるようになります。ここでは、そのテクニックについて紹介します。「値段」ボタン型セルのクリックで、4列目に値段を表示し、さらに値段が300円以上の場合は、行の背景色を変更するというコマンドを作成します。コマンドを変更する先ほど作成したGetPriceCommandクラスを変更します。GcSpreadGridオブジェクトを示すプロパティを追加します。}}次に、Executeメソッドを変更します。パラメータ「parameter」から、ボタンが押されたセル情報を格納しているCellCommandParameterクラスを取得できます。CellCommandParameterクラスのCellPositionプロパティからボタンが押されたセルの行インデックスを取得できるため、変更を行いたいSPREADの行にアクセスすることができます。CustomCommandParameterに指定したProductViewModelオブジェクトを取得します。ビューモデルのプロパティを更新します。ボタン型セルの右側のセルに価格を表示します。ボタン型セルの右側のセルに価格を表示します。価格が300円以上のものは、行の背景色を変更します。CustomCommandParameterに指定したProductViewModelオブジェクトを取得します。ビューモデルのプロパティを更新します。ボタン型セルの右側のセルに価格を表示します。価格が300円以上のものは、行の背景色を変更します。}}最後に、ビューでボタン型セルを生成するとき、Commandプロパティに設定するGetPriceCommandオブジェクトのspreadプロパティにGcSpreadGridオブジェクトを設定します。ボタン型セルを作成します。ボタンにコマンドを設定します。ボタン型セルを作成します。ボタンにコマンドを設定します。button;XAMLでは、リソースとして定義したコマンドを次のように実装します。/></Window.Resources>アプリケーションを実行し、いくつかボタン型セルをクリックすると、次のような結果となります。コマンドでSPREADを操作コマンドのコンストラクタ引数を使用するコマンドクラスから、ビューモデルやSPREADオブジェクトへアクセスする方法として、CustomCommandParameterプロパティの使用や、コマンドクラスへのプロパティ追加を紹介しましたが、この他に、コマンドクラスのコンストラクタ引数にオブジェクトを渡す方法も考えられます。XAMLにはコンストラクタに引数を渡す方法が用意されていないため、この方法はコードビハインドでの設定のみ有効です。コマンドを定義するGetPriceCommandクラスを次のように実装します。SPREADとビューモデルを示すプロパティを定義します。ビューモデルのプロパティを更新します。ボタン型セルの右側のセルに価格を表示します。価格が300円以上のものは、行の背景色を変更します。SPREADとビューモデルを示すプロパティを定義します。//ビューモデルのプロパティを更新します。ボタン型セルの右側のセルに価格を表示します。価格が300円以上のものは、行の背景色を変更します。}}ビュー側のボタン型セルの設定は、以下の通りです。Commandプロパティに設定するGetPriceCommandクラスのコンストラクタ引数に、SPREADオブジェクトとビューモデルのオブジェクトを渡します。ボタン型セルを作成します。ボタンにコマンドを設定します。ボタン型セルを作成します。ボタンにコマンドを設定します。button;以上で、前項と同様の動作を実現することができます。WPFを使用して、シンプルなMVVMアプリケーションを作成する方法を紹介しました。WPFは、グリッドでありながら標準のDataGridやListBoxコントロールと異なり、ItemTemplateを持たないため、セルや行といった項目単位でバインディングすることができません。SPREADの持つ機能を利用して工夫することで、さまざまなコマンドを実装することも可能です。MVVMパターンの実装方法は多様で、実際の業務アプリケーションでは、もっと複雑な処理が必要となりますが、本記事での基本的な実装紹介が開発の一助となれば幸いです。<1234連載通知を行うには会員登録(無料)が必要です。会員の方はログインを行ってください。スプレッドチーム)宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。