2012-02-28 9 views
1

ここにシナリオがあります。私はダブルプロパティにバインドされているUI上のテキストボックスを持っています。文字列に「#」と入力した場合、WPFの検証ではアプリケーションでは不十分です。カスタムメッセージを表示し、コードからいくつかのコントロールを無効にする必要があります。 (無効にするこれらのコントロールはxamlの一部ではありません)。今のところ、これを行うために考えられる唯一の方法は、テキストボックスを文字列プロパティにバインドし、TryParseメソッドを使用することです。しかし、これは大きな不便です。プロパティが文字列型に変更されることなく、無効な文字が入力されたという通知を受け取る方法はありますか?無効な文字入力のカスタム処理

答えて

0

よく私は私のviewmodelで "文字列"ソリューションを使用します。 IDataErrorInfoとバインディングで最も効果的です。

しかし、私はまた、私のTextboxeのInputMaskbehaviorを使用することもあります。ユーザは入力マスク用に定義された文字を入力することができます。

0

MVVMパターンを使用している場合は、ViewModelの文字列プロパティがTextboxに入力されているはずです。あなたのモデルにダブルが必要な場合でも、あなたの視点に文字列があります。次に、stringプロパティで必要な検証を行うことができます。エラーがここに存在見ているときのコントロールを無効にすることについては

public string TextProperty 
{ 
    get 
    { 
     return _textProperty; 
    } 
    set 
    { 
     if (_textProperty != value) 
     { 
      _doubleProperty = this.TransformAndValidateString(value);    
      _textProperty = value; 
     } 
    } 
} 

:ような何か

IDataErrorInfo

+0

誤った値が入力されていることをコードに見つける方法はありませんか? IDataErrorInfoによって生成された例外をリッスンするような何か? P.P.質問があまりにも基本的な場合は申し訳ありません。私は初心者です。 – Tulip

+0

IDataErrorInfoは例外を発生させません。検証が失敗した場合、エラーメッセージとともに文字列を返すメソッドを提供します。なぜこのアプローチがあなたのために働かないのですか?答えがあなたに役立つなら、upvoteを忘れないでください。 –

関連する問題