gpt4 book ai didi

wpf - 在向用户呈现验证错误之前创建延迟

转载 作者:行者123 更新时间:2023-12-01 02:47:50 25 4
gpt4 key购买 nike

在这个遵循 MVVM 模式的特定 WPF 应用程序中, View 模型实现了 IDataErrorInfo 接口(interface)来通知 View 文本字段中的无效数据。

View 中存在一个文本框,您可以在其中输入卷。这已通过属性更改更新源指定,并验证数据错误:

<TextBox 
Text="{Binding Volume, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />

这样做的问题是您在用户完成输入之前收到验证错误。例如,有效值为“25 ml”。但是在用户输入最后一个“l”之前,文本框中会出现“25 m”。这不是一个有效值,将导致 IDataError 实现这样说。

结果是,当用户键入时,文本框周围会闪烁一个红色标记。

我们希望在红色标记出现在文本框周围之前有一点延迟(0.5 秒),所以我们可以假设用户在显示验证错误之前已经完成了输入。

第一次尝试是创建一个专门的文本框,在更新 View 模型中的属性之前等待 0.5 秒。但这并不好,因为如果用户确实输入了有效值,那么在启用提交按钮之前会经过 0.5 秒。

我有一个想法,你可以编写一个专门的绑定(bind)(即创建一个从 System.Windows.Data.Binding 派生的专门的类)来实现这种行为,但我不知道该怎么做。

这是一种合理的方法,还是有更好的方法?

最佳答案

听起来您可以使用 Paul Stovell 在博客中提到的自定义 DelayBinding。我已经成功地使用它来实现延迟搜索/过滤。你可以在这里读到它:

http://www.paulstovell.com/wpf-delaybinding

关于wpf - 在向用户呈现验证错误之前创建延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483163/

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