PaN*_*1Me 8 validation wpf clear
我有一个WPF UserControl,其中有许多其他控件.TextBoxes就是其中之一.每个TextBox都有自己的验证:
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
Run Code Online (Sandbox Code Playgroud)
一个
现在假设用户在其中键入了一些无效字符.它们都会变成红色.
现在我想重置所有验证错误(由不正确的输入),并设定近期的正确值来自何处DataContext
.
我在构造函数中设置了DataContext,我不想更改它(DataContext = null对我没有帮助):
DataContext = _myDataContext = new MyDataContext(..);
Run Code Online (Sandbox Code Playgroud)
我已经找到的是这些课程:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
Run Code Online (Sandbox Code Playgroud)
我认为这些课程可以帮助我,但是他们需要Binding
一个具体的课程FrameworkElement
,我想为所有这些课程全球化.
我是否应该遍历Visual Tree(这实际上是我不喜欢的)或者有更好的解决方案吗?
这就是 BindingGroup 的用途...您可以在所有控件的容器(例如包含它们的面板)上设置 BindingGroup。这将导致对 DataContext 的更新被保留,直到您对 BindingGroup 调用 UpdateSources。如果要重置用户的输入,则可以调用 CancelEdit,BindingGroup 会将容器内的所有控件重置为 DataContext 的(仍然不变)值。
归档时间: |
|
查看次数: |
9148 次 |
最近记录: |