gpt4 book ai didi

c# - TextBox第二次没有失效

转载 作者:行者123 更新时间:2023-11-30 17:46:04 25 4
gpt4 key购买 nike

单击按钮时,我正在验证 TextBox 中的值是否有效:

txtName.GetBindingExpression(TextBox.TextProperty).UpdateSource();

文本框以红色边框突出显示,附近有错误提示。

然后我切换到其他标签。回来 - TextBox 不再突出显示。单击按钮时我再次验证,验证规则工作正常并返回 false,但文本框仍未突出显示。

如何再次将 TextBox 高亮显示为无效?

验证规则:

public class TextRequired : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var text = value as string;
return new ValidationResult(!string.IsNullOrEmpty(text), "Please, enter alue");
}
}

最佳答案

验证错误装饰器(红色矩形)显示在属于 TabControl 某个祖先的装饰器层中。当您切换选项卡时,原始选项卡的内容将被卸载,此时,装饰器将从该装饰器层中删除,因为装饰器及其装饰元素不再位于同一可视化树中。但是,当您切换回原始选项卡时,不会再次添加装饰器。这是 WPF 验证装饰器支持的弱点。我不知道这是设计使然还是疏忽大意,但解决方案非常简单。

只需将选项卡项的内容包装在 AdornerDecorator 中。这将强制将错误装饰器添加到选项卡的装饰器层,即使选项卡的内容已卸载,它也会保留在该层。当您切换回来时,它仍会存在。

<TabItem>
<AdornerDecorator>
<!-- tab content -->
</AdornerDecorator>
</TabItem>

关于c# - TextBox第二次没有失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739534/

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