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!!!