どうもこんにちわ。
D.C.4 PH攻略してますが曲がいいですね。OP曲のCDはよ
本題
WPFでViewModelを使ったときにハマったメモ。
Windows 11のアプリストアではexeが提出できるようになるらしいですよ?(なお開発者登録にクレカが必要)
Windows 11 tmp 2.0 bypass で検索検索ぅ
環境
ViewからViewModelへ。ボタン押したときの処理をViewModelでする場合
ViewModel、レイアウトは以下のようにします。
ボタン押したときの処理をViewModelに書く場合はまず、
ICommand
を実装したクラスを用意する必要があります。ViewModel内のメソッドを直接指定みたいなことは出来ない模様。
ICommand
の中に処理を書いてしまうと、他で使えなくなってしまうので、押したときに呼ばれる処理(関数)をクラス作成時のコンストラクタに取ります。
そしたら、ViewModel、レイアウトを書きます。{ get; }
を書き忘れないようにしてください。
これで実行すると、Googleがブラウザで開くと思います。
ViewModelからViewへ。値の変更を通知する場合
AndroidのLiveData的な。
レイアウト、ViewModelは以下のように
これもまずInotifyProrertyChanged
を実装したクラスを作成します。
<T>
ってのはジェネリクスってやつで、<>
の中に入れるべき型をインスタンス生成時に決定する機能です(???)
<string>
と書いてしまうと、今度数値を扱うときに別にクラスを作成しないといけないですよね?。それを回避する機能です。まぁコピペして使えばいいと思うよ。
それから、ボタンを押したときの処理をViewModelに書きたいので、ICommand
を実装したクラスを用意します。これはさっきのを使いまわします。
できたらViewModel、レイアウトは以下のように。
以上です。
おわりに
ソースコード置いておきます。
https://github.com/takusan23/WPFViewModel