WPF UpdateSourceTrigger 界面数据源更新
在项目中,类似TextBox/TextBlock控件,后台数据已经刷新,但是界面上未立即刷新,失去焦点才更新界面,原因:参数设置不正确
View中文本框绑定内容如下:
<!--1 属性更新则刷新界面绑定数据-->
<TextBlock Text="{Binding UserName,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>
<!--2 失去焦点后刷新界面绑定数据-->
<TextBlock Text="{Binding No, Mode=TwoWay,UpdateSourceTrigger=LostFocus, ValidatesOnNotifyDataErrors=True}"/>
大家会看到多了两个属性,一个是UpdateSourceTrigger,一个是Mode属性。
UpdateSourceTrigger的作用是 当做何种改变的时候通知数据源我们做了改变。
枚举类型 效果
Default 默认值(默认为LostFocuse)
Explicit 当应用程序调用 UpdateSource 方法时生效
LostFocus 失去焦点的时候触发
PropertyChanged 数据属性改变的时候触发
这边我们直接使用 PropertyChanged,当UI数据改变的时候,我们再通知到数据源去做修改。
如果指定UpdateSourceTrigger属性值设置的话,则UpdateSourceTrigger = Default
属性就是Mode,他有五个参数:
枚举类型 效果
OneWay 源发生变化,数据就会从源流向目标
OneTime 绑定会将数据从源发送到目标;但是,仅当启动了应用程序或 DataContext 发生更改时才会如此操作,因此,它不会侦听源中的更改通知。
OneWayToSource 绑定会将数据从目标发送到源
TwoWay 绑定会将源数据发送到目标,但如果目标属性的值发生变化,则会将它们发回给源
Default 绑定的模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay
推荐阅读
-
多线程WPF 如何在子线程里传值并更新界面UI
-
C# WPF 绑定到数据源的控件无法更新(显示空白)的解决办法
-
WPF UpdateSourceTrigger 界面数据源更新
-
WPF——控件绑定到数据后 第一次加载界面时绑定成功 但后来数据源发生变化 控件无变化
-
WPF平台界面开发控件使用 - 绑定到异步数据源的下拉编辑器 DevExpressWPF
-
WPF 将数据源绑定到TreeView控件出现界面卡死的情况
-
界面控件DevExpress WPF中文入门级教程 - 未绑定数据源 DevExpress界面控件WPF数据源
-
界面控件DevExpress WPF中文入门级教程 - 未绑定数据源 DevExpress界面控件WPF数据源
-
界面控件DevExpress WPF中文入门级教程 - 实时数据源 DevExpressWPF界面控件UI.net 6.0
-
界面控件DevExpress WPF中文入门级教程 - 实时数据源 DevExpressWPF界面控件UI.net 6.0