2012-07-13 115 views
0

我使用MVVM,我來到了一個情況,我需要一個按鈕來觸發動畫。 所以我設置和EventTrigger它和它運行該動畫:束縛播放動畫不止一次

<DoubleAnimation 
    (...) 
    From="{Binding ElementName=Browser, Path=DataContext.TooltipPosition}" 
To="150"/> 

的問題是,我不希望這樣的動畫播放不止一次。所以,第一次按下按鈕後,它應該從0到150,併爲所有隨後點擊它不應該是可見的,所以應該從150到150
在我的ViewModel我有一個設置爲0。我創建了一個屬性TooltipPosition我的按鈕命令將該屬性設置爲150並調用。

PropertyChanged(this, new PropertyChangedEventArgs("TooltipPosition"). 

的問題是,這個屬性之後,第二次點擊改變,所以我可以看到這個動畫播放兩次。

我該如何解決這個問題?

CNC中

是啊,對不起,我沒有包括所有的信息。 我試圖動畫大量的對象只有其中一個是可見的。所以如果用戶在GUI中改變對象的選擇,那麼動畫應該再次從0開始到150。顯然,如果元素A是動畫的,然後是B,然後又是A,那麼這個動畫將不可見。

-edit2-

我設置了TextBlock的寬度。事情是我有多個(綁定數據)TextBlocks,只有一個或任何時候都不可見。所以我綁定每個TextBlock的寬度屬性,我動畫,所以基本上所有這些都受到這個動畫的影響。但只有其中一個可能是可見的,所以它的伎倆。

+1

我不確定在您的ViewModel中包含純視圖相關的東西,如動畫等是個好主意。 MVVM並不意味着「後面的代碼中沒有代碼」。這意味着什麼不是純視圖相關的應該放在ViewModel中。 就個人而言,我會避免在特定使用情況下,使用綁定。 – ken2k 2012-07-13 10:31:13

回答

0

你可以離開了From值。

備註DoubleAnimation.To

動畫從動畫屬性的基值或前一動畫的輸出值由指定屬性的值進展

+0

是啊,對不起,我沒有包括所有的信息。我正在嘗試使其中只有一個可見的對象動起來。所以如果用戶在GUI中改變對象的選擇,那麼動畫應該再次從0開始到150。顯然,如果元素A是動畫的,然後是B,然後又是A,那麼這個動畫將不可見。 – jacek11 2012-07-13 10:04:16

+0

你有什麼動畫?如果它是對象A和B的屬性,它應該只設置動畫的「To」值。 – Clemens 2012-07-13 10:18:21

+0

我爲TextBlock的寬度設置了動畫。事情是我有多個(綁定數據)TextBlocks,只有一個或任何時候都不可見。所以我綁定每個TextBlock的寬度屬性,我動畫,所以基本上所有這些都受到這個動畫的影響。但只有其中一個可能是可見的,所以它的伎倆。 – jacek11 2012-07-13 10:25:33