1

ValidationRuleわかりましたので、アイテムの設定幅がそのアイテムの特定の範囲内にあることを確認するために を作成しようとしました。これが私の試みです:

public class AdjustWidthValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        double dValue = (double)value;

        if (dValue < ??? || dValue > ???)
            return new ValidationResult(false, "Width is out of range!");

        return new ValidationResult(true, null);
    }
}

さて、どの要素を検証する必要があるかを知るにはどうすればよいでしょうか? これは、ハードコードされた検証ルールのみをサポートしているようで、実際には使用されていないようです。検証するコンテキストが必要です。私は何かを理解していませんか?これは人の年齢とフィールドの長さだけですか? 静的ステートマシンを提供することになっていますか? これは1990年代ですか?私はとてもイライラしています。

4

2 に答える 2

2

代わりに、データ検証で IDataErrorInfo を使用できます。これに関するスレッドは次のとおりです 。MVVM実装でIDataErrorInfoを使用してデータを検証する例外

于 2011-01-31T15:54:38.557 に答える
0

引数として取得した「値」オブジェクトを検証します。これがどのようなオブジェクトであるかを知っておく必要があります。ハードコーディングされた値を使用せずに再利用可能にするために、AdjustWidthValidationRule クラスで次のようなプロパティを定義できます。

public class AdjustWidthValidationRule : ValidationRule
{
    public double Max { get; set; }
    public double Min { get; set; }

    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        double dValue = (double)value;

        if (dValue < Min || dValue > Max)
            return new ValidationResult(false, "Width is out of range!");

        return new ValidationResult(true, null);
    }
}

xaml (または ValidationRule を作成する場所) で Max と Min に値を指定できます。

于 2011-01-31T15:00:32.067 に答える