1

条件付きで必要な検証を行う方法を見つけるのが難しいです。

基本的に、検証が必要なダイアログ オブジェクトがあります。ダイアログの特定の状態を決定する bool があります。

その状態が true の場合、プロパティを検証する必要があります。false の場合、プロパティは使用されないため、検証は必要ありません。同時に、値が有効でない場合の標準の検証動作、つまりプロパティがバインドされているコントロールの周りの赤い境界線を保持したいと考えています。

私が得たもののコード例:

public class Dialog
{
    public bool UseValidation { get; set; }

    [Required]
    [StringLength(15)]
    public string NotNullString { get; set; }
}

この理由は、[OK] ボタンが押されたときにダイアログを検証して、Validator.TryValidateObject()メソッドを使用するためです。

4

1 に答える 1

1

DataBinding を使用している場合は、プロパティの明示的なゲッターとセッターを作成し、データがセッターで有効でない場合に例外をスローできます。その後、テキスト ボックス バインドのValidatesOnExceptionプロパティを Trueに設定できます。

public string NotNullString { 
   get { return _NotNullString; }
   set { 
          if(UseValidation && (String.IsNullOrEmpty(value) || value.Length > 15)) {
              throw new Exception("Value must be between 1 and 15 characters long.");
          }
          _NotNullString = value;
       }
}

ここに良い記事があります: http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part

于 2012-07-07T22:03:55.953 に答える