我有一個小的橢圓,我想每次將依賴項屬性設置爲true時刷新。由於該屬性可以在幾毫秒內很快從真實回到錯誤,所以我需要使用動畫而不是簡單的樣式數據觸發器來完成此操作。基本上,我只是想要真正的值在橢圓上ping動畫。WPF動畫只觸發一次
<Ellipse Height="10" Width="10" Stroke="#FFFFFFFF" Margin="5,3,0,0">
<Ellipse.Fill>
<SolidColorBrush />
</Ellipse.Fill>
<Ellipse.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsReceiving}" Value="True" >
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Fill.Color">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="Red"/>
<DiscreteColorKeyFrame KeyTime="0:0:0.25" Value="Transparent"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
這個動畫似乎有用,但它只在第一次觸發值時纔會觸發。我錯過了什麼嗎?
更新: 感謝您輸入的每個人。事實證明,這是一個線程問題。最初,我在控件上有一個DP,它綁定到實現INotifyPropertyChanged的視圖模型。然後我嘗試刪除控制器上的DP,並將我的視圖模型屬性轉換爲DP。繁榮,那時我開始出現一個錯誤,指出一個不同的線程擁有這個對象。我意識到我需要使用Reactive Extensions來合併一些Observable,正如我在應用程序的其他部分所做的一樣。我用PropertyChanged()恢復到視圖模型的傳統屬性,並簡單地將其綁定到控件的動畫。現在一切都完美無缺。
爲什麼你要綁定雙向呢? – franssu 2012-08-14 11:59:00