そのため、私はMVVMを初めて使用し、ユーザー入力の検証に関するいくつかの問題に苦労しています。WPF には「魔法」のように機能する組み込み機能がいくつかありますが、一般的に、「魔法」が良くないことはわかっています。
例:TextBox
タイプが のプロパティに をバインドしdouble
、ユーザーがその に「hello」と入力するとTextBox
、WPF は の周りに赤い境界線を自動的に表示TextBox
し、入力が無効であることをユーザーに通知します。
これはすべてうまくいっていますが、「魔法」のように見えます。経験豊富な開発者から、似たような WPF ビルダーとアプリ ビルダーはあまりにも多くの制御を必要としていると言われました。彼は、Web 開発では、View は Property がどのタイプであるかを認識できないと述べました。それは私には理にかなっています。したがって、これは私の一般的な質問につながります-WPFビューはプロパティタイプを理解する必要がありますか? - 代わりに Property 型を として宣言した場合、ビューを完全に制御string
できます。WPF の「スマート」「マジック」を回避する必要はありません。TextBox
私の質問を言い換える別の方法は -モデルまたはビューモデルでプロパティ型を宣言する必要がありますか?
モデルで Property 型を として宣言し、ViewModel で として宣言する場合、モデルで解析する必要があることdouble
を理解しています。string
私が調べた MVVM アプリケーションのほとんどの例では、Property 型はアプリケーション全体で似ていますが、何を処理しているのかを理解していない「愚かな」ビューの方がはるかに優れていると思います。
私の例に戻ります:プロパティが として宣言されているString
場合、入力に必要な形式を完全に制御し、無効な入力をすべて一緒に防ぐことができます。これは、 WPF を信頼するよりもはるかに優れたソリューションのようTextBox
です。