【问题标题】:Silverlight 4: How to trigger an Animation when TextBlock’s Text is changed during a DataBinding?Silverlight 4:如何在 DataBinding 期间更改 TextBlock 的文本时触发动画?
【发布时间】:2010-06-14 05:50:47
【问题描述】:

我有一个用户控件,将哪个数据上下文设置为视图模型。用户控件包含一些绑定到视图模型属性的文本块和文本框。当视图模型的属性值发生变化时,我想做一个小动画,但我似乎无法在 Silverlight 中找到这样做的方法。

在 WPF 中,我们可以使用 NotifyOnTargetUpdated 和 Binding.TargetUpdated 等属性来捕获更改,但 Silverlight 中似乎缺少它们。在我的情况下,动画不是基于属性的值,这意味着我不想在某些属性的值为例如 5 时启动动画。相反,动画应该在每次属性值发生更改时启动(以突出显示更改的用户的内容)。

这是关于如何在 WPF 中执行此操作的答案:Animate WPF Text when binding updates, how?

但是我怎样才能用 Silverlight 4 做同样的事情呢?

【问题讨论】:

    标签: silverlight data-binding silverlight-4.0


    【解决方案1】:

    您应该能够使用 Expression Blend 4 中包含的新触发器来完成此操作。例如,有一大堆新的行为/触发器等可让您对 ViewModel 中的更改做出反应。

    来自 Expression Blend 功能页面:

    新行为 Expression Blend 包括新的 TranslateZoomRotateBehavior 多点触控行为,以及可用于通过触控在项目之间滚动的 PanningItems 控件。 Expression Blend 还有一个新的触发器,它可以响应帧变化或 SketchFlow 动画的暂停或完成,称为 SketchFlowAnimationTrigger。 Expression Blend 具有新的行为集,用于在列表框之间拖动项目、修改菜单导航以及保留屏幕状态,例如 SetDataStoreValueAction 和 DataStoreChangedTrigger。

    对 FluidMoveBehavior 进行了令人兴奋的增强:如果您将其应用于同一数据项的不同视图,当项目从一个视图移动到另一个视图(例如,从列表视图到详细信息视图)时,它流畅地动画两个视图之间的过渡。

    用于使用模型-视图-视图模型模式的应用程序的新行为包括:CallMethodAction、InvokeCommandAction 和 DataStateBehavior。您可以使用这些行为来调用 ViewModel 上的行为,或响应对其属性的更改。

    条件行为和数据存储 您现在可以将条件逻辑构建到您的原型和生产应用程序中,而无需编写代码。事实上,任何动作都可以与一组必须满足才能执行动作的条件相关联。新的数据存储功能使应用程序变量(例如当前用户的角色)可以被读取和写入,以便应用程序的不同部分可以通过这种共享状态有效地进行通信。

    作为此功能的一部分引入的新行为组件包括为每个操作显示在“属性”面板中的条件编辑器、允许您操作数据存储中的值的 SetDataStoreValueAction 操作,以及在选定属性时触发的 DataStoreChangedTrigger 触发器数据存储内部已更改。

    http://www.microsoft.com/expression/products/Blend_Features.aspx

    干杯,亚历克斯

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 2013-01-18
      • 2010-10-18
      • 1970-01-01
      相关资源
      最近更新 更多