在我的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>我的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;
}发布于 2014-10-21 15:10:40
根据你的逻辑,这似乎是正常的。让我们定义一个bool标志,并将其设置为false或true,这并不重要,当应用程序运行并检查标志时,如果标志值为初始值,则不做任何操作。除此之外,你“如果”检查还需要检查聚焦的元素。如果焦点元素是我们的文本框,并且您的标志不是初始值,那么您可以更改文本块边框。
发布于 2014-10-21 15:12:23
您可以查看以下链接:Validation on Load
理想情况下,如果使用IDataErorInfo或INotifyDataErrorInfo,这是XAML应用程序中的正常行为。您可以使用beginInit和EndInit来实现所需的输出。
https://stackoverflow.com/questions/26480508
复制相似问题