在我们的项目中,我们有一个LookUp Base ViewModel
,Required-Attribute
属性上有SelectedItem
。我有另一个使用child LookUps
之一的视图,它应该忽略Required
- 属性。我已经覆盖了ViewModel中的IsValid
方法,因此保存而不关心Required
是否正常工作,但不幸的是,当我清空时,它仍然在视图上显示验证错误LookUp
:
我有几种可能性:
将LookUpBaseViewModel
分成两个也是" BaseViewModels"的孩子,一个RequiredAttribute
,一个没有。这是有效的,但是对于一个不需要在View上显示验证错误的单个视图来说,似乎有点太多的工作和许多额外的类。
将RequiredAttribute
替换为RequiredIf-Attribute
,并将一个布尔IsRequired
参数添加到构造函数中。由于我们在项目中使用AutoFac
,因此无法正常工作,因此我们无法为ILookUpBaseViewModel
- 接口实现使用布尔参数。
在视图中为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}"/>