我使用MVVM模式在WPF中開發應用程序。 我正在顯示一個面向圖的節點和鏈接(請參閱下圖)。使用故事板的動態動畫
http://free0.hiboox.com/images/1110/diapo1c36a4b95802846b8553d2fe9b9e6639.png?26
用戶可以拖動並從一個「小區」到另一個下降的節點。當用戶放下一個節點時,它的位置會改變,以便將其對齊到網格中。我想要做的是在對齊例程中調整其位置時對節點進行動畫處理。
節點,鏈接和分隔符都顯示在一個ItemsControl中。它們的表示由一些DataTemplates控制,並由Styles控制。
什麼我做的是以下幾點:
private void Align() {
// Computations...
TX = ... //Target X is set
TY = ... //target Y is set
X = TX;
Y = TY; // X and Y setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
我想要做的是以下幾點:
private void Align() {
// Computations...
TX = ...
TY = ... //TX and TY setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="UPDATEPOS">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="{Binding TX}" Duration="0:0:1"
Storyboard.TargetProperty="(Canvas.Left)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
但是,這在運行時不工作,因爲我無法綁定到「要「我的DoubleAnimation屬性(它是一個Freezable)。
做這種動態動畫最簡單的方法是什麼?直接在視圖模型中通過定時器動畫「X」屬性?
您是否找到類似MVVM的解決方案?如果您可以發佈您的解決方案的xaml代碼(更具體地說是「To」綁定問題)的一小段代碼,那將是非常好的。謝謝 – Peanut 2010-06-09 14:16:41