Hide ValidationError border&带有自定义样式的视图上的文本

时间:2015-09-10 11:53:31

标签: c# wpf validation hide

在我们的项目中,我们有一个LookUp Base ViewModelRequired-Attribute属性上有SelectedItem。我有另一个使用child LookUps之一的视图,它应该忽略Required - 属性。我已经覆盖了ViewModel中的IsValid方法,因此保存而不关心Required是否正常工作,但不幸的是,当我清空时,它仍然在视图上显示验证错误LookUpenter image description here

我有几种可能性:

  1. LookUpBaseViewModel分成两个也是" BaseViewModels"的孩子,一个RequiredAttribute,一个没有。这是有效的,但是对于一个不需要在View上显示验证错误的单个视图来说,似乎有点太多的工作和许多额外的类。

  2. RequiredAttribute替换为RequiredIf-Attribute,并将一个布尔IsRequired参数添加到构造函数中。由于我们在项目中使用AutoFac,因此无法正常工作,因此我们无法为ILookUpBaseViewModel - 接口实现使用布尔参数。

  3. 在视图中为LookUp-ContentControl添加样式以隐藏ValidationError border & text。这似乎是纸上最简单的解决方案,只需隐藏不需要的ValidationError border & text也是有意义的。

  4. 所以,我的问题是,如何使样式隐藏默认的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): enter image description here

0 个答案:

没有答案