複数の検証ルールとそれらの検証ルールのテンプレートを処理するための戦術を持っている人はいますか?
例:
2つの検証ルール(必須とデータ)が欲しい
どちらか欲しい...
変更できるテンプレートの1つは、実行されたルールに応じて表示されるか、2つのテンプレートは、実行されたルールに応じて表示されます。
複数の検証ルールとそれらの検証ルールのテンプレートを処理するための戦術を持っている人はいますか?
例:
2つの検証ルール(必須とデータ)が欲しい
どちらか欲しい...
変更できるテンプレートの1つは、実行されたルールに応じて表示されるか、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に感謝します。
私は間違っているかもしれませんが、100%確実ではありませんが、さまざまなテンプレートを表示する場合は、プログラムでテンプレートを適用する必要があると思います。
このアプローチはこれに似ていますか?WPFTextBoxの検証ルールをプログラムで変更する