WPF外包公司 — 北京动点飞扬软件 WPF 4.5探秘之四 新绑定延迟属性
Posted on 2012-10-12 13:37 WPF外包团队 — 长年承接WPF项目外包与WP8应用外包 阅读(215) 评论(0) 编辑 收藏 举报这篇文章是介绍WPF 4.5新功能系列的一部分,通过阅读这篇文章,你会发现这个属性的目的,如何使用它,以及在某些条件下还是相当的有用的。
这个属性是什么?
绑定需要在两个对象间完成:源(数据来自哪里)和目标(数据要到哪里)。比如,如果你绑定了一个TextBlock的Text属性到你的ViewModel属性“name” , TextBlock的目标和源就是你的ViewModel 。
绑定将在两个属性之间同步执行,当且仅当在TwoWay模式下的绑定完成之后,目标可以更新数据源值(TextBlock能够更新ViewModel)。
如何使用这个属性?
由于这是一个额外的绑定的属性,所以你必须在你创建的每个绑定上进行定义它。
延迟是被以毫秒为单位定义,默认值0是一个经典的绑定约束。
下面就是一个绑定示例,设置一个500毫秒的延迟:
延迟是只应用在只有一个方向:从目标到源。
什么时候使用这个属性?
最初有人可能会认为这不是个有用的功能,但是在一段时间之后,会发现在某些场景中还是非常有用的。
1、 MSDN 指出,有一些组件比如说是滑块,就没有必要去对滑块移动的每个像素更新源值。
2、 同样参照MSDN,你可以在文本框中使用这种属性来输入文本块,而不用一个字母一个字母的输入。
北京动点飞扬具有四年以上的WPF外包开发经验,欢迎联系我们咨询业务
QQ:372900288
Email:SLteam@vip.qq.com
3、 可以用于master/details scenarii,当改变选择触发一些耗时的处理在UI线程上时。
4、 在相同的情况下,如果您在启动每个更改的异步工程,它可以STRT很多的线程池的饱和(或引起过多的网络使用等)。
5、 有时在master/details scenarii里,详细的视图是相当复杂的,也需要时间来呈现它,这时延迟可以触发渲染,但是只有在它是有用的时候。
举个例子:
master/detail scenarii是非常有用的,以一个例子来说明它,比方说,我们又一列“person”,然后从里面选择一个详细的显示出来,接下来我们会看见如下的界面:
每次变更所选的人,在UI线程上就会触发一个费时的过程在setter里,通过 Thread.Sleep 的调用来进行模拟:
{
get { return _selectedPerson; }
set
{
_selectedPerson = value;
//Simulate time consuming operation
Thread.Sleep(500);
RaisePropertyChanged("SelectedPerson");
}
}
当未设置延迟,则在列表中的导航只是缓慢和冻结上每个更改的用户界面。只是让“下箭头”键让UI冻结有点太大了。设置延迟属性值为500毫秒,就可以轻松地用键盘导航列表。
<ListBox ItemsSource="{Binding Persons}" SelectedItem="{Binding SelectedPerson,Delay=500}" />
最后,添加一个按钮,用于触发一种源对象就是,证明延迟工程只向一个方向的改变。
注册后,演示的完整代码源可以发在件夹上找到。
它是对 WPF 框架的补充,同时它也非常有用 !如果您希望更多的信息,您可以阅读此新属性的 MSDN 页面。