WPF アプリの MVVM パターンとコマンドに問題があります。問題はMVVMパターンではなく、私のGUIで起こっていることです。状況を説明します:
私のアプリは、いくつかのファイルに DoStuff できます。function を持つクラスがありますDoStuff(int limit)
。ユーザー インターフェイスには次の項目があります。
- A
Button
DoStuffBtn
解析を開始します。 - A
TextBox
LimitTxt
制限を埋めること。 - A
CheckBox
LimitChk
制限を有効または無効にします。
「チェックを外す」LimitChk
場合は、LimitTxt.Text = ""
とLimitTxt.IsEnabled = false
. 「チェック」LimitChk
すると、LimitTxt.IsEnabled = false
再び、何かを入力するまでテキストは空のままになります。
私は WPF と MVVM のコマンドに関する多くのチュートリアルを読みましたが、自分のケースをその型に注ぎ込むことができないようです。私が示した例は、実際には私の UI のほんの一部にすぎませんが、これもうまくできないようです。
次のような質問に出くわします。
- 2 つ(有効化と無効化) または 1 つだけ (切り替え)
Commands
が必要ですか?LimitChk
int
toをバインドする場合LimitTxt
、空にして無効にするとどうなりますか?- が押され
DoStuff(Int32.Parse(LimitTxt.Text))
たときに使用するのはきれいな方法ですか?DoStuffBtn
- で 2 つのコマンドを使用する
LimitChk
と、有効かどうかを判断するのCanExecute()
機能はどうなりますか?ICommand
LimitChk
したがって、主な質問は次のとおりです。私が説明した状況は、WPF でコマンドを使用する適切なパターンにどのように適合しますか?
私が見たWPF、コマンド、およびMVVMに関するいくつかのリンク:
- http://www.devx.com/DevX/Article/37893/0/page/1
- http://msdn.microsoft.com/en-us/magazine/cc785480.aspx?pr=ブログ
- http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/432/MVVM-for-Tarded-Folks-Like-Me-or-MVVM-and-What-it-Means-to-Me.aspx
- http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
これまでのところ、私が理解しているのは、UI から可能な限り遠ざけなければならないということです。UIに影響を与えるUIのようなものでさえ。つまり、チェックを外すとLimitChk
無効になりますLimitText
。それでも、UI 関連の情報と、実際に行わなければならない実際の作業に関係するアクションとの間の違いを維持する必要があると思います。