【发布时间】:2011-03-10 01:12:14
【问题描述】:
我有一个 WPF UserControl,其中包含许多其他控件。 文本框就是其中之一。 每个 TextBox 都有自己的验证:
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
一个
现在假设用户在其中输入了一些无效字符。它们都将变为红色突出显示。
现在我想重置所有验证错误(来自不正确的输入)并设置最近的正确值来自DataContext。
我在构造函数中设置了 DataContext,我不想更改它(DataContext = null 对我没有帮助):
DataContext = _myDataContext = new MyDataContext(..);
我已经找到了这些类:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
我认为这些课程可以帮助我,但它们需要 Binding 和具体的 FrameworkElement,我想在全球范围内为所有这些课程。
我是否应该遍历 Visual Tree(这确实是我不喜欢的)还是有更好的解决方案?
【问题讨论】:
-
当您绑定正确的值时,它会自动重置验证错误。您是否在视图模型中使用 INotifyPropertyChanged 接口,并且属性会引发属性更改事件?
-
是的,我正在使用它。这就是我最初尝试过的。但是 DataSource 没有变化。因此 WPF 不会反映旧值
标签: wpf validation