2011-09-02 12 views
6

MVVMベースのアプリケーションでは、データエントリのフィールドを検証する必要があります。可能であれば、標準のWPF検証バインディングをErrorTemplatesで使用したいと考えています。WPFの確定的および非同期フィールド検証

私は完全にViewModelにによってトリガ/駆動されるように検証ロジックの実行をしたいと思いますが(ビューへのプッシュ、ビューによって引っ張らないで)次のような理由:

  1. それは非同期で動作する必要があります検証ロジックが実行に時間がかかることがあるためです。検証ロジックを実行するときに、私は

(内部状態が突然無効になったエントリの方法で変更されたとき、ユーザは、「適用」をクリックするか、後にのみ、例えば)より決定し、きめ細する必要が

  • 私はSilverlightが正確にこの目的のために導入されたINotifyDataErrorInfoを持っていることを知っていますが、WPFはそうではありません。確定ロジックと非同期ロジックを有効にするにはどうすればよいですか?

  • +0

    それだけでは不可能であると思われるので、私は、ここで説明するように異なったルートを移動する必要があります。http://stackoverflow.com/questions/7293277/create-a-visualtree-off-of -a-control-template-in-code – bitbonk

    +0

    WPF 4.5では、INotifyDataErrorInfoのSilverlightと同様のサポートが導入されていることに注意してください。例:http://anthymecaillard.wordpress.com/2012/03/26/wpf-4-5-validation -asynchrone/ – GrahamMc

    答えて

    0

    WPFとSilverlightのビルトイン検証は、クライアント側の検証(Regex、解析値など)のためのものです。

    検証を実行するためにサーバーに行く必要がある場合(または検証に時間がかかる)、私はカスタム方法でそれを行います。など、保存ボタンをクリックしたときと

    だから(あなたが使用しているMVVMフレームワーク言及していない)あなたはViewModelにでSaveメソッドを持っていると言う:私はちょうどすべてのだろう

    public void Save() 
    { 
        //Do your validation, this might start a new thread (I use Async CTP myself) 
    
        //If validation is good, do your extra work, else display validation errors 
    } 
    

    あなたのViewModel内のアクション内でこれに必要な作業

    +0

    私はErrorTemplatesを使用できないと言っていますか?私は彼がWPFとカスタムコントロールのエラーテンプレートを組み込んでいることに頼る必要があります。例えば私は無効なテキストボックスの周りに標準的な赤い枠線を表示したいと思います。この境界を強制的に表示するにはどうすればよいですか? – bitbonk

    +0

    私はトップの答えのような方法を使用するように提案しています:http://stackoverflow.com/questions/921601/how-can-i-handle-a-validation-error-in-my-viewmodel-instead-of -my-views-code-beha。私はそれが長い実行中の操作(常にUIをロックする)になる場合は、組み込みの検証を使用することをお勧めしません。 – jonathanpeppers

    +0

    私はまだ何らかの「ErrorTemplate」を実現し、VMがイベントを発生させたらそれを表示する必要があります。私のフォームの中には残念ながらかなりのフィールドがあるので、エラービジュアルはすぐにビジュアルツリーの一部になりますが、そのフィールドで検証エラーが発生した場合にのみ作成するようにしてください。私のフォローアップの質問の情報:http://stackoverflow.com/questions/7293277/create-a-visualtree-off-of-a-control-template-in-code – bitbonk

    関連する問題