В нашем проекте у нас есть LookUp Base ViewModel
, который имеет Required-Attribute
на SelectedItem
. У меня есть другой вид, который использует один из child LookUps
, который должен игнорировать Required
-трибут. Я уже переопределен метод IsValid
в ViewModel, поэтому экономия, не заботясь о Required
работает правильно, но, к сожалению, это все еще показывает ошибку проверки на виду, когда я опустошите LookUp
: Скрыть ValidationError border и текст на вид с пользовательским стилем
У меня было несколько возможности:
расколоть
LookUpBaseViewModel
в два Чайлдс, которые также являются «BaseViewModels», один сRequiredAttribute
и один без. Это работает, но кажется, что это слишком много работы и много дополнительных классов для всего одного представления, которое не должно показывать ошибки проверки в представлении.Замените
RequiredAttribute
наRequiredIf-Attribute
и добавьте параметр BooleanIsRequired
в конструктор. Это не работает, поскольку мы используемAutoFac
в нашем проекте, поэтому мы не можем использовать логический параметр для реализацииILookUpBaseViewModel
-interface.Добавить стиль в
LookUp-ContentControl
на вид, чтобы скрытьValidationError border & text
. Это казалось самым простым решением на бумаге, и также имеет смысл просто скрыть нежелательныеValidationError border & text
.
Итак, мой вопрос, как мне сделать стиль, чтобы скрыть ошибку проверки WPF по умолчанию (так что красная рамка и текст за ней)? Я новичок, когда дело доходит до стилей, но это то, что я пытался (и который не делает ничего, кажется):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="HideValidationErrorContentControlStyle" TargetType="{x:Type ContentControl}" BasedOn="{StaticResource {x:Type ContentControl}}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<!-- Empty -->
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<!-- Empty -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
С стилем на моем LookUp-ContentControl
, как это:
<ContentControl x:Name="MyLookup" Style="{StaticResource HideValidationErrorContentControlStyle}"/>
Это результат я хочу (даже когда ValidationError обычно будет показано ниже):
Установите Validation.ErrorTemplate = "{x: Null}" на элемент управления, где вам не нужна красная рамка ошибки. –