UpdateSourceTrigger和Mode的区别

在WPF中:
UpdateSourceTrigger= 只决定“什么时候”把值推回源;
Mode= 决定“要不要”
推回源。
默认 Mode=OneWay 时,绑定引擎根本不会注册“目标→源”的管道,你就算把 UpdateSourceTrigger 写成 PropertyChanged 也没人监听,自然一次回写都不会发生。
PasswordBox 的附加属性默认就是 OneWay,所以必须显式 Mode=TwoWay 才开通回写通道;
而普通 TextBox.Text 默认自带 TwoWay,因此过去你只写 UpdateSourceTrigger=PropertyChanged 就够了——不是 PropertyChanged 神通广大,而是人家通道本来就开着。

以下是常见的控件UpdateSourceTrigger和Mode的默认值

控件 依赖属性 默认Mode 默认UpdateSourceTrigger 备注
TextBox Text TwoWay LostFocus 只写UpdateSourceTrigger=PropertyChanged就能实时回写,不用再写TwoWay
PasswordBox Password(附加) OneWay Explicit 必须显式Mode=TwoWay,否则不回写;触发时机由附加属性里UpdateSource()决定
TextBlock Text OneWay - -
Button Command OneWay - -
Button Content OneWay - -
Button CommandParameter OneWay - -
CheckBox IsChecked TwoWay PropertyChanged 勾选立即回写
RadioButton IsChecked TwoWay PropertyChanged 同上
ComboBox SelectedItem/SelectedValue TwoWay PropertyChanged 下拉立即回写
ListBox SelectedItem/SelectedValue TwoWay PropertyChanged 同上
ListView SelectedItem/SelectedValue TwoWay PropertyChanged 同上
DataGrid SelectedItem/SelectedValue TwoWay PropertyChanged 行选择即时回写;单元格编辑默认RowEditEnding(等效LostFocus)
Slider Value TwoWay PropertyChanged 拖动即时回写
DatePicker SelectedDate TwoWay PropertyChanged 日期选择即时回写
ItemsControl ItemsSource OneWay - -
posted @ 2025-10-17 22:06  孤沉  阅读(3)  评论(0)    收藏  举报