[英]WPF binding validation not show error message
尝试验证用户名文本框字段时遇到问题。 当我失去焦点时,除了验证程序外,我都会显示错误。
我创建了UsernameValidator类,在其中实现了ValidationRule
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (this.username == null)
return new ValidationResult(false, "value cannot be empty.");
else
{
if (this.username.ToString().Length > 3)
return new ValidationResult
(false, "Name cannot be more than 3 characters long.");
}
return ValidationResult.ValidResult;
}
在XAML中我设置控制模板
<ControlTemplate x:Key="validationErrorTemplate">
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Grid Width="12" Height="12">
<Ellipse Width="12" Height="12"
Fill="Red" HorizontalAlignment="Center"
VerticalAlignment="Center"
></Ellipse>
<TextBlock Foreground="White" FontWeight="Heavy"
FontSize="8" HorizontalAlignment="Center"
VerticalAlignment="Center" TextAlignment="Center"
ToolTip="{Binding ElementName=ErrorAdorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
>X</TextBlock>
</Grid>
<TextBlock Foreground="Red" FontWeight="12" Margin="2,0,0,0"
Text="{Binding ElementName=ErrorAdorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
></TextBlock>
</StackPanel>
<AdornedElementPlaceholder
x:Name="ErrorAdorner" ></AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
并为我的textBox用户名声明
<TextBox x:Name="usernameTextBox" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}" HorizontalAlignment="Left" Height="23" Margin="115,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="277" PreviewKeyDown="OnUsernameTextBoxKeyDown">
<TextBox.Text>
<Binding Path="Username" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:UsernameValidator></local:UsernameValidator>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox
UsernameValidator类是我用于验证的类。
程序成功编译,没有错误和警告。
我遵循此教程: http : //www.codeproject.com/Tips/690130/Simple-Validation-in-WPF
WPF的设计静默地使绑定操作失败(例如,在正常操作期间,任何内容都不会显示给用户)。
但是,当您在调试器下运行WPF程序(例如Visual Studio中的“运行+调试”按钮)时,将在“输出”窗口中看到绑定错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.