WPF/UWP 绑定中的 UpdateSourceTrigger
来源:互联网 发布:求职简历邮件正文知乎 编辑:程序博客网 时间:2024/06/05 20:54
在开发 markdown-mail 时遇到了一些诡异的情况。代码是这么写的:
<TextBox Text="{Binding Text, Mode=TwoWay}"/>
然而在 TextChanged
事件之后延时执行了一些操作时,从 ViewModel
里拿到的值却始终是旧的。
阅读本文将了解其原因和解决办法。
无论是 WPF 还是 UWP,Binding
中都有 UpdateSourceTrigger
属性。
在 WPF 中,其可取的值为:
public enum UpdateSourceTrigger{ Default, PropertyChanged, LostFocus, Explicit}
在 UWP 中,其可取的值为:
public enum UpdateSourceTrigger{ Default, PropertyChanged, Explicit}
这些值代表的含义是:
Default
- 默认值,多数情况下与
PropertyChanged
一样,然而对TextBox.Text
属性来说,却是 LostFocus(WPF)或 Explicit(UWP)。
- 默认值,多数情况下与
Explicit
- 必须在显式地调用 BindingExpression.UpdateSource 的情况下才会更新源值。
LostFocus
(WPF 专属,不过 UWP 的预览版里也有)- 目标控件失去焦点的时候更新源值。
PropertyChanged
- 绑定的目标值改变的时候就会更新源值,至于检测方法,则完全由 WPF/UWP 的绑定系统完成
于是,为了解决一开始的问题,我们需要在 TextBox 的 Text 属性的双向绑定里重新设置新的 UpdateSourceTrigger
的值。
<TextBox Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
没错,就是加这半句就好了。
参考资料
- How to: Control When the TextBox Text Updates the Source - Microsoft Docs
- c# - WPF two-way binding not working - Stack Overflow
- The UpdateSourceTrigger property - The complete WPF tutorial
- UpdateSourceTrigger Enum (Windows.UI.Xaml.Data) - UWP app developer - Microsoft Docs
- UpdateSourceTrigger Enum (System.Windows.Data) - Microsoft Docs
- TextBox.Text Property (System.Windows.Controls) - Microsoft Docs
阅读全文
0 0
- WPF/UWP 绑定中的 UpdateSourceTrigger
- WPF UpdateSourceTrigger
- UpdateSourceTrigger Property in WPF Binding
- WPF-10:绑定时注意UpdateSourceTrigger
- WPF-10:绑定时注意UpdateSourceTrigger
- WPF教程(三十六)UpdateSourceTrigger属性
- WPF中的绑定杂记
- WPF 中的数据绑定
- WPF 绑定中的TargetNullValue
- WPF中的属性绑定 binding
- WPF 控件中的数据绑定
- WPF中的值绑定转换
- win10 uwp 绑定密码
- WPF中的命令与命令绑定(二)
- WPF中的命令与命令绑定(一)
- WPF中的命令与命令绑定(二)
- WPF中的命令与命令绑定(一)
- WPF中的命令与命令绑定
- [kuangbin带你飞]专题十七 AC自动机 C
- 源码解析 Lock Condition
- 用python写网络爬虫-1.网络爬虫简介
- iOS11返回按钮和导航栏右按钮的完美适配
- 今日头条各种套路玩法
- WPF/UWP 绑定中的 UpdateSourceTrigger
- Servlet——了解Java Servlet技术
- MHN开源蜜罐安装踩坑以及golang升级
- 86. Partition List
- CyclicBarrier
- hadoop能用到的系统端口
- 记录一个ByteBuffer在多线程下存取的简单应用
- 小四旋翼无人机学习日记(一)
- Python3从入门到放弃