Итак, я выяснил подход, который работает, и я надеялся получить обратную связь от любого, у кого может быть интерес к этому.
ValidationRule:
Мое правило проверки изменен, чтобы отправить обратно "ErrorObject", который имеет требуется копаться & свойства Message
public class ErrorObject
{
public bool IsRequired { get; set; }
public string Message { get; set; }
}
....
return new ValidationResult(false, new ErrorObject() { IsRequired = true, Message = "Is Required" });
Шаблон:
В Validation Шаблон теперь я могу получить доступ к этим свойства и соответствующим образом изменить визуальность. (В этом примере я показывающий * для требуемых полей)
<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}}" />
Так что это простой пример, но вы можете себе представить, что это может быть очень мощным. Спасибо MS за то, что вы отправили обратно объект !!!
Я думаю, вы можете быть правы в том, что нужно «программировать шаблоны», но этого я и стараюсь избегать. Если я могу просто сделать это с помощью XAML, то в тысячу раз проще применять шаблоны проверки для всего приложения. Кроме того, ни один подход в этом вопросе, который вы связываете, относится только к нескольким правилам проверки, которые вставляются в зависимости от разных факторов. В моей проблеме я могу ожидать наличия правил проверки во всех случаях, я просто хочу иметь возможность действовать по-разному. Спасибо за попытку, хотя –