繁体   English   中英

WPF绑定验证不显示错误消息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM