ValidationRule红色边框问题

时间:2014-10-21 06:47:07

标签: wpf validationrule

在我的WPF应用程序中,我为我的TextBoxes创建了ValidationRules,这样它就不会允许空字符串工作正常并显示带有文本的红色边框,告诉用户它不能为空。当应用程序启动时,所有字段都是空白等待输入,但我仍然看到它们周围的红色边框。这是正常的行为吗?注意:我希望在使用表单的用户在表单最初加载时触发属性更改事件或lostfocus事件时触发它。

我正在进行的验证示例:

 <TextBox x:Name="itemNum" HorizontalAlignment="Left" Height="23" Margin="82,58,0,0"     VerticalAlignment="Top" Width="90"
            HorizontalContentAlignment="Left" VerticalContentAlignment="Center" PreviewKeyDown="ItemNum_PreviewKeyDown" 
            PreviewTextInput="ItemNum_PreviewTextInput" TabIndex="0" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}">
            <TextBox.Text>
                <Binding Path="rxID" Mode="TwoWay" StringFormat="{}{0:#}" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <MY:TextBoxNotEmptyValidationRule x:Name="rxIDValidation" ValidatesOnTargetUpdated="True" />
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

My TextBoxNotEmptyValidationRule类:

public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
     {
        string str = value as string;
        if (string.IsNullOrEmpty(str))
        {
            return new ValidationResult(false, "Value CAN NOT BE empty");
        }
        return ValidationResult.ValidResult;
    }

2 个答案:

答案 0 :(得分:0)

根据你的逻辑,这似乎是正常的。让我们定义一个bool标志并设置为false或true,无关紧要,比运行应用程序时检查标志,如果标志值是初始值则不做任何事情。除此之外,你“if”检查还需要检查聚焦元素。如果focus元素是我们的文本框,并且您的标志不是初始值,那么您可以更改文本块边框。

答案 1 :(得分:0)

您可以查看以下链接: Validation on Load

理想情况下,如果您使用IDataErorInfo或INotifyDataErrorInfo,这是XAML应用程序中的正常行为。您可以使用beginInit和EndInit来实现所需的输出。