2009年9月16日 星期三

在WPF中解除動畫綁定的屬性

在WPF中對某個屬性使用動畫的時候
原本的值會被忽略而直接由動畫管理需要呈現的數值
除了下面幾種情形,常會發生數據被綁定的現象

一種是在FillBehavior被設定為FillBehavior.Stop時
在動畫完成後,變化的屬性會自動被設定回原本的值
在此之後再對該值作動作則不會被動畫影響到

第二種則是僅使用From
則該屬性原本的值會被設定為終點
所以在此之後(甚至動畫執行期間)對該值做動作仍會發生作用

第三種是在動畫執行過後重新指定綁定的動畫(設成null即解除動畫)
不過這種方法跟第一種方法一樣
重新綁定的時候,該值會被設定成原本的值
如果需要將值保留下來,則在重新綁定之前先存起來再重設回來

private void ReleaseAnimation(Button b)
{
/// save width of button and set it back
double w = b.Width;
b.Width = w;

/// apply null animation to button
b.BeginAnimation(Button.WidthProperty, null);
}

此時需注意,重新設值必須放在重新綁定動畫之前
因為在還沒有解除綁定前,設定會更改真實的值
所以在解除綁定後,就會直接變成該值
如果先解除綁定在設定新值,則可能會出現閃爍或跳躍的影響

--
參考資料
WPF/Silverlight:解鎖被Storyboard束縛的關聯屬性

沒有留言:

張貼留言