WPF Multiple Validation.ErrorTemplate取决于错误的类型

时间:2011-03-16 15:14:56

标签: wpf

我刚刚开始使用WPF,我正在玩mvvm和造型。

我有一个绑定到我的视图模型字段FirstName的文本框。 FirstName是必填字段,具有最大长度。

    [Required(ErrorMessage = "Required")]
    [StringLength(20, ErrorMessage = "Too long")]
    public String FirstName
    {
        get { return firstName; }
        set
        {
            firstName = value;
            NotifyOfPropertyChange("FirstName");
            NotifyOfPropertyChange("CanSave");
        }
    }

我添加了一些样式,以便在出现错误时显示                                                                                                                                                                     

    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <DockPanel LastChildFill="True">
                    <TextBlock DockPanel.Dock="Right"
                               Foreground="Red"
                               FontSize="14pt"
                               Margin="-15,0,0,0" 
                               FontWeight="Bold">*</TextBlock>
                    <AdornedElementPlaceholder Name="controlWithError"/>
                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip"          Value="{Binding RelativeSource={x:Static RelativeSource.Self},          Path=(Validation.Errors)[0].ErrorContent}"/>
            <Setter Property="Background"       Value="{StaticResource ErrorBackgroundBrush}"/>
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="BorderBrush" Value="{StaticResource TextControlBorderBrush}" />
        </Trigger>
    </Style.Triggers>
</Style>

所以现在我有一个格式很好的盒子,当出现错误时有红色背景和红色星号。当你开始输入时,这将被删除,然后当长度达到20,并且再次出现错误时,这将返回到验证模板。

我的问题是,是否有人为不同类型的错误实施了不同的模板。

我想做的是每个需要以红色星号开头的属性 - 没有红色背景。然后当他们输入内容并且所需的字段错误消失时,星号就应该去了。

但是另一个错误validaiton应该显示一个惊叹号和一个红色背景。

任何?

0 个答案:

没有答案