Does anyone have a tactic for dealing with multiple validation rules and templates for those validation rules.
Example:
I want to have two validation rules (required & data)
I want either...
One template that can change is display depending on which rule is fired or Two templates, which get displayed depending on which rule is fired
Ok, so I've figured out an approach that works and I was hoping to get feedback from anyone that might have an interest in this.
ValidationRule:
My validation rule is altered to send back an "ErrorObject" that has IsRequired & Message properties
public class ErrorObject
{
public bool IsRequired { get; set; }
public string Message { get; set; }
}
....
return new ValidationResult(false, new ErrorObject() { IsRequired = true, Message = "Is Required" });
Template:
In the Validation Template I can now access these properties and alter the visual accordingly. (In this example I'm showing an * for required fields)
<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}}" />
So this is a simple example, but you can imagine that this can get very powerful. Thanks MS for letting send back an object!!!
I may be wrong, not 100% sure, but I think you have to programmably apply templates if you want to display varying templates.
Is this approach similar to this? Programmatically change validation rule in WPF TextBox
HTH.
来源:https://stackoverflow.com/questions/3049708/multiple-validation-rules-and-validation-templates-in-wpf