gpt4 book ai didi

WPF 验证 : Clearing all validation errors

转载 作者:行者123 更新时间:2023-12-04 08:30:13 25 4
gpt4 key购买 nike

我有一个 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();

我认为这些类(class)可以帮助我,但它们需要 Binding混凝土 FrameworkElement我想在全局范围内为他们所有人做这件事。

无论如何我应该遍历可视化树(这真的是我不喜欢的)还是有更好的解决方案?

最佳答案

这就是 BindingGroup 的用途……您可以在所有控件的容器上设置 BindingGroup,例如包含它们的面板。这将导致对 DataContext 的更新被保留,直到您在 BindingGroup 上调用 UpdateSources。如果您想重置用户的输入,您可以调用 CancelEdit,而 BindingGroup 会将容器内的所有控件重置为 DataContext 的(仍然不变的)值。

关于WPF 验证 : Clearing all validation errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3148064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com