WPF教程(三十六)UpdateSourceTrigger属性
来源:互联网 发布:约拿情结 知乎 编辑:程序博客网 时间:2024/06/07 09:57
在前面的文章我们看到,TextBox中的变化并不是立即传递到源,而是在TextBox失去焦点后,源才更新。这种表现由绑定中的UpdateSourceTrigger属性来控制。它的默认值是Default,源会根据你绑定的属性来更新。写这篇文章的时候,除了Text属性之外的所有属性,源会随属性的改变而立即更新。Text属性不一样,它只有在目标元素失焦后才更新。
UpdateSourceTrigger的默认值是Default,其他值有PropertyChanged、LostFocus和Explicit。前两个已经描述过了,最后一个是指必须通过手动推送来更新,通过调用UpdateSource。
下面来看看上面这些选项是如何工作的,下面的例子由上一章的例子更新而来:
<Window x:Class="WpfTutorialSamples.DataBinding.DataContextSample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DataContextSample" Height="130" Width="310"> <StackPanel Margin="15"> <WrapPanel> <TextBlock Text="Window title: " /> <TextBox Name="txtWindowTitle" Text="{Binding Title, UpdateSourceTrigger=Explicit}" Width="150" /> <Button Name="btnUpdateSource" Click="btnUpdateSource_Click" Margin="5,0" Padding="5,0">*</Button> </WrapPanel> <WrapPanel Margin="0,10,0,0"> <TextBlock Text="Window dimensions: " /> <TextBox Text="{Binding Width, UpdateSourceTrigger=LostFocus}" Width="50" /> <TextBlock Text=" x " /> <TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50" /> </WrapPanel> </StackPanel></Window>
using System;using System.Windows;using System.Windows.Controls;using System.Windows.Data;namespace WpfTutorialSamples.DataBinding{ public partial class DataContextSample : Window { public DataContextSample() { InitializeComponent(); this.DataContext = this; } private void btnUpdateSource_Click(object sender, RoutedEventArgs e) { BindingExpression binding = txtWindowTitle.GetBindingExpression(TextBox.TextProperty); binding.UpdateSource(); } }}
上面三个文本框分别使用了不同的UpdateSourceTrigger。
第一个使用的是Explicit,源不会更新除非你手动来操作。正因为这个原因,我在这个TextBox旁边添加了一个按钮,用于手动更新源。在后台代码中,我们看到点击事件处理方法里面只有两行代码,第一行获取目标控件的绑定,第二行调用UpdateSource()方法。
第二个使用的是LostFocus,对于Text绑定来说其实就是一个默认值。也就是说一旦目标控件失去焦点,源就会被更新。
第三个使用的是PropertyChanged,一旦绑定的属性值改变,源会立即更新。本例中文本改变就产生这种效果。
请尝试在自己的电脑上运行上面的例子,来观察这三个文本框有哪些区别:第一个文本框的值在你点击按钮之前不会改变,第二个在你离开这个文本框时才改变,第三个敲下键盘就会自动更新。
总结
绑定的UpdateSourceTrigger属性用来控制改变的值何时传递给源。WPF很容易控制这些,一般情况下默认值足以应付大多数例子。你可以同时获得持续更新的UI和良好的性能。
在其他情况下,你需要使用更多的进程控制,这个属性将非常有用。记住很多你不更新源的地方,往往是需要被更新的。如果你想完全获得掌控权,那么使用Explicit,然后手动更新,但是这个超出了数据绑定这一块的内容。
- WPF教程(三十六)UpdateSourceTrigger属性
- WPF UpdateSourceTrigger
- UpdateSourceTrigger Property in WPF Binding
- WPF/UWP 绑定中的 UpdateSourceTrigger
- WPF-10:绑定时注意UpdateSourceTrigger
- WPF-10:绑定时注意UpdateSourceTrigger
- 【D3.js数据可视化系列教程】(三十六)-- 冰柱图
- WPF(依赖属性)
- WPF(附加属性)
- WPF (xaml) 属性
- (WPF)依赖属性
- (WPF)附加属性
- (WPF)依赖属性
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出
- WPF教程(一) WPF是什么?
- WPF教程(二) WPF vs WinForms
- WPF教程(四) Hello,WPF!
- WPF教程(八)WPF应用简介
- MATLAB*2017/1/9
- Servlet的开发介绍
- 单例设计模模式——懒汉式为什么线程不安全
- layout、values和drawable屏幕自适应
- Mysql免安装版配置【图文版和文字版】
- WPF教程(三十六)UpdateSourceTrigger属性
- 多表查询数据库
- Android学习笔记-Android6.0运行时权限(续)
- 解决Android 7.0 (Android N)中 Android Device Monitor(DDMS)的 File Explorer不显示目录树的问题
- 哈理工OJ 1150 相识(排序后枚举)
- 炉石传说爆牌鱼斩杀算法C语言实现
- bash环境GIT仓库基本操作(1)
- Linux驱动中module_init宏的解析
- html列表