WPF外包公司 — 北京动点飞扬软件 WPF 4.5探秘之四 新绑定延迟属性

如果你读了新的 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,你可以在文本框中使用这种属性来输入文本块,而不用一个字母一个字母的输入。

北京动点飞扬具有四年以上的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 的调用来进行模拟:

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="{Binding SelectedPerson,Delay=500}" />

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

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

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

原文地址:https://www.cnblogs.com/dotfun/p/2721216.html