我刚刚开始使用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应该显示一个惊叹号和一个红色背景。
任何?