Это проект WPF/MVVM. Я использую блок приложения проверки MS Enterprise Library v5.0.
Требование состоит в том, что если значением поля со списком является «Удобства» или «Другое», то поле «Комментарий» должно иметь значение.
Тем не менее, я создал собственный валидатор и выполняю проверку следующим образом:
ValidationResults results = Validation.Validate<Annotation>(this.Annotation);
Существуют и другие возможности ошибок, и они покрываются стандартными атрибутами VAB.
Кажется, это работает нормально. Итак, теперь, если у меня есть условие ошибки, это может быть любое из правил, и у меня есть коллекция ValidationResults, доступная для опроса, чтобы определить, какое свойство имеет ошибку. Однако у меня возникают проблемы с применением стиля для определенного элемента, когда это происходит. В какой-то момент я использовал проверку на уровне свойств для данного элемента управления, но это не работает, когда мне нужно сравнить несколько свойств для одного правила проверки.
vab:Validate.BindingForProperty="Text"
Свойство выше и этот стиль работают для простой проверки одного свойства, такой как StringLenghtValidator. Это не работает в моем сценарии.
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="White"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
Как я могу заставить текстовое поле комментариев иметь определенный стиль после того, как пользовательский валидатор с несколькими свойствами сообщит об ошибке?