4

複数の検証ルールとそれらの検証ルールのテンプレートを処理するための戦術を持っている人はいますか?

例:

2つの検証ルール(必須とデータ)が欲しい

どちらか欲しい...

変更できるテンプレートの1つは、実行されたルールに応じて表示されるか、2つのテンプレートは、実行されたルールに応じて表示されます。

4

2 に答える 2

2

私はうまくいくアプローチを見つけました、そして私はこれに興味を持っているかもしれない誰かからフィードバックを得ることを望んでいました。

ValidationRule:

私の検証ルールは、IsRequired&Messageプロパティを持つ「ErrorObject」を送り返すように変更されています。

public class ErrorObject
{
    public bool IsRequired { get; set; }
    public string Message { get; set; }
}

// ...
    
return new ValidationResult(false, new ErrorObject() { IsRequired = true, Message = "Is Required" });

レンプレート:

検証テンプレートで、これらのプロパティにアクセスし、それに応じてビジュアルを変更できるようになりました。(この例では、必須フィールドに*を表示しています)

<Border
    BorderBrush="Red"
    CornerRadius="3"
    BorderThickness="1">
    <AdornedElementPlaceholder
        x:Name="errorAdorner" />
</Border>
<TextBlock
    Text="*"
    Foreground="Red"
    Visibility="{Binding ElementName=errorAdorner,
                 Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent.IsRequired,
                 Converter={StaticResource BooleanToVisibilityConverter}}" />

これは単純な例ですが、これは非常に強力になる可能性があることを想像できます。オブジェクトを返送させてくれたMicrosoftに感謝します。

于 2010-06-16T18:47:45.510 に答える
0

私は間違っているかもしれませんが、100%確実ではありませんが、さまざまなテンプレートを表示する場合は、プログラムでテンプレートを適用する必要があると思います。

このアプローチはこれに似ていますか?WPFTextBoxの検証ルールをプログラムで変更する

于 2010-06-15T23:12:46.720 に答える