2010-06-14 23 views
3

我有一個用戶控件,其datacontext設置爲視圖模型。用戶控件包含一些與視圖模型的屬性綁定的文本塊和文本框。我想在視圖模型的屬性值發生變化時做一個小動畫,但我似乎無法找到在Silverlight中執行此操作的方法。Silverlight 4:如何在DataBinding期間更改TextBlock的文本時觸發動畫?

在WPF中,我們可以使用NotifyOnTargetUpdated和Binding.TargetUpdated等屬性來捕獲更改,但它們似乎從Silverlight中丟失。在我的情況下,動畫不是基於屬性的值,這意味着當某個屬性的值例如是5時,我不想開始動畫。相反,每次屬性值改變時動畫都應該開始(突出顯示已更改內容爲用戶)。

下面是關於如何做到這一點在WPF答案:Animate WPF Text when binding updates, how?

但我怎麼可以做同樣的Silverlight 4?

回答

5

您應該可以使用Expression Blend 4中包含的新觸發器來完成此操作。例如,有一大堆ne行爲/觸發器等,可讓您對ViewModel中的更改作出反應。

從Expression Blend的功能頁:

新的行爲 Expression Blend中包括新的TranslateZoomRotateBehavior多點觸控行爲,以及PanningItems控制,您可以使用通過使用觸摸項目之間滾動。 Expression Blend還有一個新的觸發器,用於響應幀更改或暫停或完成SketchFlow動畫(稱爲SketchFlowAnimationTrigger)。 Expression Blend具有用於在列表框之間拖動項目,用於修改菜單導航以及保留屏幕狀態(如SetDataStoreValueAction和DataStoreChangedTrigger)的新行爲集。

對FluidMoveBehavior進行了一項令人振奮的改進:如果將其應用於同一數據項的不同視圖,當項從一個視圖移動到另一個視圖時(例如,從列表視圖移動到細節視圖),它流暢地激發了兩種觀點之間的過渡。

用於使用Model-View-ViewModel模式的應用程序的新行爲包括以下內容:CallMethodAction,InvokeCommandAction和DataStateBehavior。您可以使用這些行爲來調用ViewModel上的行爲,或者響應對其屬性的更改。

條件行爲和數據存儲 現在,您可以將條件邏輯構建到原型和生產應用程序中,而無需編寫代碼。事實上,任何行動都可以與一系列必須滿足的條件相關聯,才能執行行動。新的數據存儲功能可以使應用程序變量(例如當前用戶的角色)可以讀取和寫入,從而有效地使應用程序的不同部分可以通過此共享狀態進行通信。

作爲此功能的一部分引入的新行爲組件包括出現在屬性面板中的每個動作的條件編輯器,允許您操作數據存儲中的值的SetDataStoreValueAction動作以及每當選定時觸發的DataStoreChangedTrigger觸發器數據存儲內的屬性發生更改。

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

乾杯,亞歷克斯

相關問題