【发布时间】:2016-01-19 05:40:06
【问题描述】:
我们目前正在使用 WPF 和 .Net4.5 编写一个 GUI 应用程序。
我们的一个页面包含一个TabControl,其中自定义UserControls 为TabItems。这些UserControls 只包含一个可编辑的TextBoxes 列表。 Textboxes 有一个自定义的ValidationRule,它根据正则表达式验证文本。问题是这些可编辑的文本框绑定到Properties,它们在启动时使用来自文本文件/数据库的默认值加载。
我需要在文本框获得焦点之前或对其进行编辑之前进行验证,以确保在文本文件/数据库中输入的值正确输入。目前,当我选择一个选项卡项时,文本框未显示红色验证错误框,即使验证似乎运行正常。只有在单击带有Validation 错误的项目后,我才会看到相关的红色框。
我正在使用UpdateSourceTrigger="PropertyChanged",我可以调试并看到验证代码在正确的时间运行,但仍然不会显示红色框。我什至添加了代码以在TabItem 获得焦点时重新触发绑定属性上的“属性更改”事件 - 但这仍然无济于事。这是未显示验证的TextBoxes 之一的示例:
<TextBox x:Name="TextBox1" Margin="10,5,5,5" Width="150" MaxLength="5" Style="{StaticResource ServiceEntryTextBox}">
<TextBox.Text>
<Binding Path="TexBox1BoundProperty" Converter="{StaticResource DoubleConverter}" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnExceptions="True">
<Binding.ValidationRules>
<validation:StringRegexFormatValidation RegexPattern="^[0-9]{0,1}.{0,1}[0-9]{1,3}$" ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
我还缺少另一件作品吗?
【问题讨论】:
标签: c# wpf validation