在我的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;
}
答案 0 :(得分:0)
根据你的逻辑,这似乎是正常的。让我们定义一个bool标志并设置为false或true,无关紧要,比运行应用程序时检查标志,如果标志值是初始值则不做任何事情。除此之外,你“if”检查还需要检查聚焦元素。如果focus元素是我们的文本框,并且您的标志不是初始值,那么您可以更改文本块边框。
答案 1 :(得分:0)
您可以查看以下链接: Validation on Load
理想情况下,如果您使用IDataErorInfo或INotifyDataErrorInfo,这是XAML应用程序中的正常行为。您可以使用beginInit和EndInit来实现所需的输出。