【发布时间】:2020-08-17 19:06:19
【问题描述】:
我有一个 WPF 应用程序,其中有一个 TabControl,并且在某个选项卡内有一个带有验证规则的 TextBox。
验证规则工作正常,转换器工作正常,绑定也正常。
但是当我这样做时会发生一个非常烦人的错误(可能与 WPF 本身有关):
- 输入无效文本(验证发生,文本框出现红色边框)
- 切换到另一个标签
- 返回带有文本框的选项卡。
验证完全停止工作,直到我输入 valid 文本,然后它再次开始工作。 更改文本是不够的,只有输入有效文本才会重新开始工作。
当我进入选项卡时如何强制重新验证文本?
我已经尝试了两种解决方案listed here,但似乎没有带红色边框:
- 在选项卡上的事件
Selector.Selected(检查它是否被调用)中,添加txtName.GetBindingExpression(TextBox.TextProperty).UpdateSource(); - 在验证规则中使用
ValidatesOnTargetUpdated="True"属性
如果需要,这是 XAML 的简要说明:
<TabControl ...>
<TabItem ... />
<TabItem ...>
...
<TextBox Name="txtName" ...>
<TextBox.Text>
<Binding Path="..."
UpdateSourceTrigger="PropertyChanged"
Mode="OneWayToSource"
FallbackValue="5"
Converter="MyCustomConverterWorkingOk">
<Binding.ValidationRules>
<local:MyCustomValidationWorkingOk/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</TabItem>
</TabControl>
【问题讨论】:
标签: c# wpf validation data-binding