彩票走势图

WPF 4.5探秘之四 新绑定延迟属性

原创|其它|编辑:郝浩|2012-08-22 22:04:27.000|阅读 1661 次

概述:如果你读了新的 WPF 4.5 功能上的 MSDN 页面,你会发现它的标签下"自动更新的数据绑定源"。但是对我来说它更加精确的理解是“延迟”属性被添加到了绑定的添加扩展里面。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

如果你读了新的 WPF 4.5 功能上的 MSDN 页面,你会发现它的标签下"自动更新的数据绑定源"。但是对我来说它更加精确的理解是“延迟”属性被添加到了绑定的添加扩展里面。更多WPF4.5探秘系列文章    

这篇文章是介绍WPF 4.5新功能系列的一部分,通过阅读这篇文章,你会发现这个属性的目的,如何使用它,以及在某些条件下还是相当的有用的。

这个属性是什么?

绑定需要在两个对象间完成:源(数据来自哪里)和目标(数据要到哪里)。比如,如果你绑定了一个TextBlock的Text属性到你的ViewModel属性“name” , TextBlock的目标和源就是你的ViewModel 。

绑定将在两个属性之间同步执行,当且仅当在TwoWay模式下的绑定完成之后,目标可以更新数据源值(TextBlock能够更新ViewModel)。

如何使用这个属性?

由于这是一个额外的绑定的属性,所以你必须在你创建的每个绑定上进行定义它。

延迟是被以毫秒为单位定义,默认值0是一个经典的绑定约束。

下面就是一个绑定示例,设置一个500毫秒的延迟:

<TextBlock Text="{Binding Name,
Delay=500}"/>

延迟是只应用在只有一个方向:从目标到源。

什么时候使用这个属性?

最初有人可能会认为这不是个有用的功能,但是在一段时间之后,会发现在某些场景中还是非常有用的。

1、 MSDN 指出,有一些组件比如说是滑块,就没有必要去对滑块移动的每个像素更新源值。

2、 同样参照MSDN,你可以在文本框中使用这种属性来输入文本块,而不用一个字母一个字母的输入。

3、 可以用于master/details scenarii,当改变选择触发一些耗时的处理在UI线程上时。

4、 在相同的情况下,如果您在启动每个更改的异步工程,它可以STRT很多的线程池的饱和(或引起过多的网络使用等)。

5、 有时在master/details scenarii里,详细的视图是相当复杂的,也需要时间来呈现它,这时延迟可以触发渲染,但是只有在它是有用的时候。

举个例子:

master/detail scenarii是非常有用的,以一个例子来说明它,比方说,我们又一列“person”,然后从里面选择一个详细的显示出来,接下来我们会看见如下的界面:

WPF 4.5探秘之四 新绑定延迟属性

每次变更所选的人,在UI线程上就会触发一个费时的过程在setter里,通过 Thread.Sleep 的调用来进行模拟:

public Person SelectedPerson
{
get { return _selectedPerson; }
set
{
_selectedPerson = value;
//Simulate time consuming operation
Thread.Sleep(500);
RaisePropertyChanged("SelectedPerson");
}
}

当未设置延迟,则在列表中的导航只是缓慢和冻结上每个更改的用户界面。只是让“下箭头”键让UI冻结有点太大了。设置延迟属性值为500毫秒,就可以轻松地用键盘导航列表。

<ListBox ItemsSource="{Binding Persons}" SelectedItem=&quot;{Binding SelectedPerson,Delay=500}" />

最后,添加一个按钮,用于触发一种源对象就是,证明延迟工程只向一个方向的改变。

注册后,演示的完整代码源可以发在件夹上找到。

它是对 WPF 框架的补充,同时它也非常有用 !如果您希望更多的信息,您可以阅读此新属性的 MSDN 页面。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:外文翻译

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP