gpt4 book ai didi

wpf - 数据绑定(bind) : Different triggers for different purposes

转载 作者:行者123 更新时间:2023-12-03 10:49:16 26 4
gpt4 key购买 nike

我有一个带有数据验证的 WPF MVVM 数据表单窗口。很多控件都是文本框。目前,数据绑定(bind)触发器设置为默认值,即。 e.失去焦点。这意味着仅在可能完全填写字段时才对其进行验证。所以当删除一个数字并输入另一个数字时,暂时的空值不会显示为输入错误。

但一个缺点是,保存按钮只能在焦点移出文本框时启用。 (无论在哪里,都超出了编辑控件。假设还有其他可聚焦的内容。)如果这是唯一的更改,则用户等待“保存”按钮可用,但什么也没有发生。对于保存按钮,我想使用立即绑定(bind)触发器。怎么可能呢?

编辑:忘记提及我的保存按钮(使用 ICommand)仅在确定输入已修改且有效时才启用。因此,数据将保持不变,直到数据绑定(bind)对其进行更新,并且直到焦点移动到另一个控件时才会发生这种情况。

最佳答案

我实际上有a similar question不久前,我最终使用的解决方案是自定义 DependencyProperty当按下一个键时启动一个计时器,并且只实际处理 PropertyChange如果特定时间已过,则通知。

这意味着除非用户暂停输入一段时间,否则绑定(bind)的属性不会得到更新(和验证)。

代码可以找到here (可能需要一些清理),它是这样使用的:

<TextBox
local:DelayedUpdateBehavior.TargetProperty="{x:Static TextBox.TextProperty}"
local:DelayedUpdateBehavior.Milliseconds="1000"
Text="{Binding MyTextProperty, UpdateSourceTrigger=Explicit}" />

编辑:其实 this link可能会更好。它是一个标记扩展,因此您可以直接从绑定(bind)中使用它。我不记得我过去使用过这两种方法中的哪一种,但我知道这是其中一种:)
<TextBox Text="{local:DelayBinding Path=MyTextProperty, Delay='00:00:01'}" />

关于wpf - 数据绑定(bind) : Different triggers for different purposes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558022/

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